Accueil > Développement > Bases de données > Lecture et écriture dans une base MySQL

Lecture et écriture dans une base MySQL

Comment écrire et lire un enregistrement dans une table MySQL.

lundi 22 mai 2006, par Prélude

Nous avons vue rapidement dans un précédent article comment ouvrir une base de données et lire un enregistrement. Nous allons voir ici comment écrire un enregistrement.
Nous allons prendre l’exemple d’un joueur qui s’inscrit sur un site. Il doit indiquer son pseudo et un mot de passe.
Lorsqu’il reviendra sur le site, le programme enregistrera la date courante dans sa fiche.

Ouverture

Reprenons le code qui permet d’ouvrir une base :

@mysql_connect($gBaseHost, $gBaseLogin, $gBasePass) or die("Impossible de se connecter à la base de données");
@mysql_select_db($gBase) or die("Impossible de se connecter à la base de données");

Je vous laisse revoir l’article expliquant ces deux lignes pour plus d’informations.

Ecriture

Le formulaire a été rempli correctement par le joueur, nous avons son pseudo et son mot de passe et la base est ouverte.
Voici la requête SQL à effectuer pour enregistrer ces informations :

$SQL = "INSERT INTO TableJoueurs (Pseudo, Password) VALUES (";
$SQL .= "'".$Pseudo."', ";
$SQL .= "'".$Password."');");

Attention lorsque vous faites une requête SQL à bien protéger votre base et vérifiant que les informations saisies soient correctes. Nous verrons dans un prochain articles les différentes possiblités de vérifier ces informations.

La syntaxe de la commande INSERT INTO est la suivante :

INSERT INTO table [(champs1, champs2...)]
VALUES (valeur1, valeur2...)

La liste des champs peut-être ommise si l’ordre d’insertion concerne tous les champs de la table.

Maintenant que la requête est prête, nous allons l’exécuter :

$result = mysql_query($SQL);

Un nouvel enregistrement devrait donc se trouvé dans la table "TableJoueurs". Vous pouvez récupérer l’identifiant unique de cet enregistrement avec la commande suivante :

$ID = mysql_insert_id();

Et enfin, n’oubliez pas de fermer la base :

mysql_close();

Lecture

Voilà l’enregistrement dans la base. Le joueur revient pour jouer. Il indique donc son pseudo (qui lui servira de login dans cet exemple) et son mot de passe. Nous allons vérifier que ces informations sont correctes et modifier la date de dernier passage dans sa fiche.

Commençons par rechercher la fiche en fonction du pseudo et du mot de passe :

$SQL = "SELECT * FROM TableJoueurs WHERE ";
$SQL .= "Pseudo='".$Pseudo."' AND Password='".$Password."'";

$result = mysql_query($SQL);

La requête est effectuée, il nous reste juste à contrôler qu’il y a au moins un enregistrement :

$nb = mysql_num_rows($result);

Cette fonction permet de retourner le nombre d’enregistrements trouvé dans la requête SQL correspondante.
Dans notre cas, si ce nombre est supérieur à 0, c’est que nous avons la bonne fiche. Nous la modifions donc en conscéquence. Dans le cas contraire, il faudra retourner un message d’erreur à l’utilisateur car sa fiche n’a pas été trouvée.

if($nb>0) {        // la fiche a été trouvée
        $ID = mysql_result($result, 0,"ID");        // on récupère le numéro de la fiche
       
        $SQL = "UPDATE TableJoueurs SET ";
        $SQL .= "DatePassage=".date("'Y-m-j'")." ";
        $SQL .= "WHERE ID=".strval($ID);
       
        $result = mysql_query($SQL);
       
}else{                // la fiche n'a pas été trouvée
        // prévoir un message d'erreur pour l'utilisateur...
}

La fiche vient d’être modifiée à l’aide de la requête SQL "UPDATE".

La syntaxe de cette commande est la suivante :

UPDATE table SET champs1=valeur1, champs2=valeur2...
[WHERE condition(s)]

Evidement, à chaque fois il faut contrôler les données qui sont utilisées pour effectuer les recherches, mises à jour ou insertion dans la base de données. Il ne faut jamais inserer directement dans une base de données des informations en provenance d’un formulaire !