Utilisation : requête avec INSERT, UPDATE et DELETE sur MYSQL

Accès à mySQL via PHP avec PDO.

Connexion à un serveur de bases de données MYSQL

<?php
define("hostname","serveurmysql"); 
define("database","BDD_votreLogin");
define("username","votreLogin"); 
define("password","votreMotDePasse");

$dsn = 'mysql:dbname='.database.';host='.hostname.';charset=utf8';    

$ma_connexion_mysql = new PDO($dsn, username, password);
             // pour afficher les erreurs
$ma_connexion_mysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
             // pour récupérer le résultat des requêtes SELECT sous forme de tableaux associatifs 
$ma_connexion_mysql->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC); 

var_dump($ma_connexion_mysql); // ligne à supprimer
?>
Connexion échouée : SQLSTATE[28000] [1045] Access denied for user 'votreMotLogin'@'localhost' (using password: YES) 

=> une/les constante(s) hostname, username password, database ne sont pas correctes

object(PDO)#1 (0) { } 

=> la connexion est correcte, $ma_connexion_mysql est un objet PDO sur lequel on peut utiliser des méthodes (fonctions associées à l’objet)   la fonction var_dump affiche les informations structurées d’une variable.

exécution d’une instruction SQL

utilisation, principe
utilisation, principe

Application : Requête UPDATE, DELETE et INSERT

préparation

exemple de script SQL à compléter avec le TP6 :

DROP TABLE IF EXISTS Etudiant;

CREATE TABLE Etudiant (
  idEtudiant INT AUTO_INCREMENT
  , nom VARCHAR(20)
  , adresse VARCHAR(40)
  , ville VARCHAR(20)
  , code_postal INT(5)  ZEROFILL
  , telephone NUMERIC(10) ZEROFILL
  , date_naissance DATE
  , sexe ENUM('F','H')
  , boursier ENUM('O','N')
  , groupe_id INT
  , semestre_id INT
  , note_ue1 NUMERIC(4,2)
  , note_ue2 DECIMAL(4,2)
  , PRIMARY KEY(idEtudiant)
);



INSERT INTO Etudiant (idEtudiant, nom, adresse, ville, code_postal, telephone, date_naissance, sexe, boursier, groupe_id, semestre_id, note_ue1, note_ue2) VALUES
(1, 'BERNARD', '1 rue sous bois', 'Belfort', 90000, 0384545401, '2000-01-01', 'F', 'N', 1, 1, 10.50, 9.50),
(19, 'CHAVEAUX', '5 rue du chasseur', 'Strasbourg', 68000, 0384545419, '2000-01-01', 'H', 'N', 2, 2, 10.50, 9.50),
(20, 'PRETTOT', '8 rue vilapogo', 'Belfort', 90000, 0384545420, '2000-07-12', 'H', 'O', 2, 2, 13.50, 8.50),

     ....

  // à compléter avec les TPs précédents (tp6)

SELECT idEtudiant, nom, adresse, ville, code_postal, boursier FROM Etudiant;


recommandation pour concaténer en PHP des variables et du texte :

recommandation
documentation

Exemple :

<?php 
$adresse="IUT de Belfort";
$id_etudiant=9; 

$ma_commande_SQL ="UPDATE Etudiant SET adresse ='${adresse}' WHERE idEtudiant >= ${id_etudiant};"; 

echo $ma_commande_SQL."<br>"; 

if($ma_connexion_mysql!= NULL){ 
    $nbr_lignes_affectees=$ma_connexion_mysql->exec($ma_commande_SQL); 
    echo "<br> nbre de lignes affectees : ".$nbr_lignes_affectees; 
} 

?>

autres solutions pour concaténer du texte et des variables en PHP :

$ma_commande_SQL ="UPDATE Etudiant SET adresse ='".$adresse."' WHERE idEtudiant >= ".$id_etudiant.";"; 

$ma_commande_SQL ="UPDATE Etudiant SET adresse ='$adresse' WHERE idEtudiant >= $id_etudiant;"; 



Exercice 1

<?php 
$rue='7 rue du chateau'; // pour l'adresse
$ville='Valdoie'; 
$code_postal='90300'; 
$id_etudiant=26; 

$ma_commande_SQL = "à modifier";

echo $ma_commande_SQL."<br>"; 

if($ma_connexion_mysql!= NULL){ 
    $nbr_lignes_affectees=$ma_connexion_mysql->exec($ma_commande_SQL); 
    echo "<br> nbre de lignes affectees : ".$nbr_lignes_affectees; 
} 

?>



Exercice 2 :

sur le même principe

<?php 
$id_etu_11=15;
$id_etu_13=17;
$boursier='O';

$ma_commande_SQL ="";



Exercice 3 :

sur le même principe

<?php 
$id_etu_3=3;
$id_etu_4=4;

$ma_commande_SQL ="";



Exercice 4 :

<?php 
$Nom='dubois';
$Adresse='7 rue du bois';
$Ville ='Belfort';
$Code_Postal ='90000';
$Telephone='0381940000';
$Date_Naissance ='1997-07-27';
$Sexe='H';
$Boursier='N';

$ma_commande_SQL ="";