Cours PHP-MySQL
|
Matthias Meusburger |
Sommaire :
SELECT identifiant, nom, prenom FROM clients WHERE identifiant > 10
Va pouvoir renvoyer un tableau de ce type :| identifiant | nom | prenom |
|---|---|---|
| 12 | Meusburger | Matthias |
| 13 | Cape | Joey |
| 15 | De La Rocha | Zack |
| 17 | Manson | Marilyn |
| 18 | Hepburn | Audrey |
INSERT INTO clients VALUES (19, 'Einstein', 'Albert);
On insère un nouvel enregistrement avec pour valeurs : identifiant = 19, nom = Einstein, et prénom = Albert.UPDATE clients SET prenom='Cedric' WHERE identifiant=12
On modifie la ligne de la table clients où l'identifiant est égal à 12 pour remplacer la valeur actuelle du champ prénom par la valeur Cedric.DELETE FROM clients WHERE identifiant > 15
On supprime de la table client tous les enregistrements dont la valeur du champ identifiant est supérieure à 15.Prototype : mysql_close([identifiant de connexion])
Cette fonction ferme la connexion précisée en paramètre
ou la dernière connexion ouverte si rien n'est précisé.
La fonction renvoie TRUE en cas de succès et false sinon.
$connect_result = mysql_connect($hostname, $username, $password);
if (!$connect_result) {
echo("Impossible de se connecter au serveur de bases de données.\n");
} else {
echo("Connexion réussie!\n");
// Traitements mysql_close($connect_result);
}
Une fois connecté au serveur, vous n'utilisez aucune base en particulier. Avant toute chose, il convient donc de sélectionner la base sur laquelle vous allez travailler, grâce à la fonction mysql_select_db
$nomdelabase = "mabase"; $select_result = mysql_select_db($nomdelabase);
if (!$select_result) { echo("Impossible de se connecter à la base de données $nomdelabase"); } else { echo("Connecté à la base $nomdelabase !"); // Traitements }
La fonction mysql_query() permet d'envoyer une requête SQL à la base de données.
/* On suppose que la connexion au serveur ainsi que la sélection de la base de données ont déjà été faites */ $query = "SELECT * FROM matable WHERE monidentifiant > 10";
$query_result = mysql_query($query);
if (!$query_result) { echo ("Impossible d'afficher les résultats"); } else { echo ("Voici les résultats"); // Traitements }
Cette fonction, combinée à une instruction d'itération (comme while ou for), va permettre de récupérer les résultats de la requête ligne par ligne. Chaque ligne sera un tableau associatif, c'est à dire que les cases du tableau PHP porteront le nom de la colonne MySQL correspondante.
$query = "SELECT * FROM matable WHERE monidentifiant > 10";
$query_result = mysql_query($query);
if (!$query_result) { echo ("Impossible d'afficher les résultats"); } else { echo ("Voici les résultats : <br>\n"); // On parcours chaque ligne du résultat while($row = mysql_fetch_array($query_result)) { // Pour chaque ligne retournée, on affiche ces 3 champs :
echo $row["monidentifiant"];
echo $row["prenom_client"]; echo $row["nom_client"];
}
}
Cette fonction marche de la même manière que la fonction
mysql_fetch_array(), sauf que les lignes de résultat sont renvoyées
sous forme d'un tableau simple, c'est à dire que ses cases seront
accessibles par un numéro.
Bien que moins lisible et moins confortable, cette manière de
faire peut trouver son intérêt lorsque l'on veut parcourir
les différents champs retournés sans se soucier de leur
nom ou de leur nombre. On peut ainsi recourir à deux itérations
imbriquées, une pour parcourir les lignes de résultat,
et une pour parcourir les colonnes de chaque ligne.
$query = "SELECT * FROM matable WHERE monidentifiant > 10";
$query_result = mysql_query($query);
if (!$query_result) { echo ("Impossible d'afficher les résultats"); } else { // On détermine le nombre de champs du résultat $nombrechamps = mysql_num_fields($query_result); echo ("Voici les résultats : <br>\n"); // On parcours chaque ligne du résultat while($row = mysql_fetch_row($query_result)) { // Pour chaque ligne retournée, on parcours tous les champs : for ($i = 0; $i < $nombrechamps; $i++) { echo ($row[$i]); }
}
}
<?php // Connexion au serveur de base de données $connect_result = mysql_connect("localhost", "raymonde", "mot_de_passe");
if (!$connect_result) {
echo("Impossible de se connecter au serveur de bases de données.<br>\n");
} else {
echo("Connecté au serveur de bases de données!<br>\n"); // Selection de la base de données $select_result = mysql_select_db("mabase");
if (!$select_result) { echo("Impossible de se connecter à la base de données.<br>\n"); } else { echo("Connecté à la base de données!<br>\n"); // Envoi d'une requête $query = "SELECT * FROM matable WHERE monidentifiant > 10";
$query_result = mysql_query($query);
if (!$query_result) { echo ("Impossible d'afficher les résultats<br>\n"); } else { // On détermine le nombre de champs du résultat
$nombrechamps = mysql_num_fields($query_result); // Et le nombre de lignes renvoyées $nombrelignes = mysql_num_rows($query_result); if ($nombrelignes == 0) { echo ("Aucun résultat trouvé!<br>\n"); } else {
echo ("Voici les résultats : <br>\n");
// On parcours chaque ligne du résultat
while($row = mysql_fetch_row($query_result)) {
// Pour chaque ligne retournée, on parcours tous les champs :
for ($i = 0; $i < $nombrechamps; $i++) {
// On affiche la valeur de chaque champ suivi d'un espace
echo ($row[$i]." \n");
} // Après chaque ligne parcourue, on saute une ligne à l'affichage echo ("<br>\n"); } } } }
mysql_close($connect_result);
}
?>
<form method="post" action="ma_page.php">
<input type="text" name="champ1" value="valeur par défaut">
donnera :<input type="submit" name="valide_mon_form" value="Valider">
donnera :<form method="post" action="ma_page.php">
<input type="text" name="champ1"
value="valeur par défaut">
<input type="submit" name="valide_mon_form"
value="Valider">
</form>
echo $champ1;
Dès lors, on peut effectuer des traitements sur ces valeurs et les utiliser dans des requêtes.$query = "INSERT INTO ma_table VALUES('$champ1')";
$result = mysql_query($query);
<?php if (!isset($inserer)) { ?> <form method="post" action="ma_page.php">
<input type="text" name="nom" value="Tapez votre nom"> <input type="text" name="prenom" value="Tapez votre prénom">
<input type="submit" name="inserer" value="Valider">
</form> <?php
} else { // Connexion au serveur de base de données $connect_result = mysql_connect("localhost", "raymonde", "mot_de_passe");
if (!$connect_result) {
echo("Impossible de se connecter au serveur de bases de données.<br>\n");
} else {
echo("Connecté au serveur de bases de données!<br>\n"); // Selection de la base de données $select_result = mysql_select_db("mabase");
if (!$select_result) { echo("Impossible de se connecter à la base de données.<br>\n"); } else { echo("Connecté à la base de données!<br>\n"); // Envoi d'une requête $query = "INSERT INTO ma_table VALUES ('$nom', '$prenom')";
$query_result = mysql_query($query);
if (!$query_result) { echo ("L'insertion n'a pas aboutie!<br>\n"); } else { if (!mysql_affected_rows()) { echo ("L'insertion n'a pas aboutie!<br>\n"); } else { echo ("L'insertion s'est bien passée!<br>\n"); } } }
mysql_close($connect_result);
} }
?>
$retour = @fonction();
On pourra écrire ceci :$nomdelabase = "mabase"; $select_result = mysql_select_db($nomdelabase);
if (!$select_result) { echo("Impossible de se connecter à la base de données $nomdelabase"); } else { echo("Connecté à la base $nomdelabase !"); // Traitements }
L'écriture en est simplifiée, mais cette manière de procéder connaît ses limites dès lors que l'on veut exécuter du code ou garder un pied de page même en cas d'erreur.$nomdelabase = "mabase";
mysql_select_db($nomdelabase)
or die("Impossible de se connecter à la base de données $nomdelabase");
echo ("Connecté à la base $nomdelabase !");
//Traitements