Les fonctions utilisateur

  • Introduction
  • Informations
PHP dispose de nombreuses fonctions pour interagir avec une base de données MySQL.
Ce cours présente les fonctions les plus utiles et les plus souvent employées pour développer des sites Web.  
Netger
  • Auteur : Netger
  • Publication : 26 nov. 2007 12:12
  • Consultations : 2967
 

1. MySQL pour stocker des informations

En employant de concert MySQL et PHP vous pouvez créer des scripts capable de stocker toutes sortes d'informations.
C'est ainsi que vous pouvez créer des services tels qu'un espace membre, un forum de discussions, un sondage, etc...
  • Connexion à MySQL
  • Sélectionner une base de données MySQL
  • Interroger une base de données MySQL
  • Lire les données résultant d'une requête MySQL
  • Déconnexion de MySQL
  • D'autres fonctions utiles avec MySQL

2. Connexion à MySQL

Pour pouvoir vous connecter à votre base de données MySQL vous devez tout d'abord réunir quelques informations :
Le server
Dans la majorité des cas ce paramètre est "localhost". Il est possible de compléter cette valeur en indiquant le numéro de port utilisé, par exemple "localhost:3306". Une autre donnée acceptable est le chemin vers le socket local, par exemple pour "localhost" : ":/path/to/socket"
Le nom d'utilisateur
La plupart du temps cette valeur est "root". C'est le cas lorsque vous travaillez en local (par exemple avec EasyPHP). Si vous employez les services d'un hébergeur Web ce dernier vous fournira ce login ou vous permettra d'accéder à une console d'administration où vous pourrez le créer vous-même
Le mot de passe
Si vous travaillez en local cette valeur est vide. Dans le cas contraire votre hébergeur vous fournira cette valeur ou vous laissera la possibilité de la définir vous-même
Ces informations étant maintenant définies vous pouvez utiliser la fonction mysql_connect() pour vous connecter à votre base de données MySQL.
Code-source php
  1. mysql_connect("HOST", "LOGIN", "PASSWORD");
 
Lorsque la connexion avec MySQL est établie cette fonction retourne l'identifiant de cette connexion.
Dans la cas contraire c'est la valeur booléenne FALSE qui est retournée.

3. Sélectionner une base de données MySQL

Après vous être connecté à votre base de données MySQL il vous faut sélectionner précisément la base sur laquelle vous aller travailler.

Il faut pour cela utiliser la fonction mysql_select_db().
Celle-ci prend en paramètres le nom de la base à sélectionner et l'identifiant de connexion résultant de la fonction mysql_connect().
Code-source php
  1. $db = mysql_connect("HOST", "LOGIN", "PASSWORD");
  2. mysql_select_db("BDD",$db);
 
Si la connexion établie et la base indiqué sont trouvé cette fonction retourne la valeur booléenne TRUE, sinon elle retourne la valeur FALSE.

4. Interroger une base de données MySQL

Cela revient à envoyer une requête à votre base MySQL afin que les instructions demandées soient exécutées.
Ces instructions peuvent concerner l'insertion, l'interrogation, la modification ou la suppression de données mais cela n'est pas du PHP mais du langage SQL (il faudra donc consulter le cours sur SQL)

Donc quelle que soit la requête SQL que vous souhaitez exécuter sur votre base de données il faut utiliser la fonction PHP mysql_query().
Code-source php
  1. mysql_query("requête MySQL");
 
La valeur retournée par cette fonction dépend du type de requête envoyé à MySQL.
Si la requête est de type "sélection de donnés" : la fonction retourne FALSE en cas d'échec sinon elle retourne une ressource contenant les données demandées.
Si la requête est de type "modification de donnés" : elle retourne TRUE si les données ont bien été affectées sinon elle retourne FALSE

5. Lire les données résultant d'une requête MySQL

Cela consiste à récupérer les données résultant d'une requête de type "sélection" dans le but de leur affecter un traitement PHP et/ou de les afficher.

PHP propose plusieurs fonctions prenant en paramètre la ressource résultant d'une requête et permettant d'arriver à ce résultat, ce sont les suivantes :
mysql_fetch_row()
Cette fonction retourne un tableau à index numérique correspondant à une ligne de résultat, puis décale le pointeur d'un cran. Ainsi il est possible de récupérer toutes les données d'une table en plaçant cette fonction dans une boucle comme l'illustre l'exemple suivant :
Code-source php
  1. 		$sql = mysql_query("SELECT login, password FROM table_membre");
  2. while($tab = mysql_fetch_row($sql)) {
  3. 	echo 'Login : '.$tab[0].'	';
  4. 	echo 'Password : '.$tab[1].'<br/>';
  5. }
 
mysql_fetch_assoc()
Cette fonction retourne un tableau associatif (index alphanumérique) correspondant à une ligne de résultat, puis décale le pointeur d'un cran. Tout comme pour la fonction précédente il faudra utiliser une boucle pour récupérer les données :
Code-source php
  1. $sql = mysql_query("SELECT login, password FROM table_membre");
  2. while($tab = mysql_fetch_assoc($sql)) {
  3. 	echo 'Login : '.$tab['login'].' ';
  4. 	echo 'Password : '.$tab['password'].'';
  5. }
 
Si plusieurs champs de la table portent le même nom ce seront les données de la dernières qui seront renvoyer. Pour palier à cela il faudra utiliser des alias sur les noms en doublons.
mysql_fetch_object()
Cette fonction retourne un objet donc les propriétés correspondent à une ligne de résultat, puis décale le pointeur d'un cran. Encore une fois une boucle nous permettra de récupérer les données :
Code-source php
  1. $sql = mysql_query("SELECT login, password FROM table_membre");
  2. while($tab = mysql_fetch_object($sql)) {
  3. 	echo 'Login : '.$tab -> login.' ';
  4. 	echo 'Password : '.$tab -> password.'';
  5. }
 
Lorsqu'il n'y a pas ou plus de données renvoyées ces fonctions retournent la valeur booléenne FALSE.

6. Déconnexion de MySQL

Bien que cela ne soit pas réellement nécessaire puisqu'une connexion ouverte avec mysql_connect() est automatiquement fermé à la fin du script il est tout de même préférable d'indiquer explicitement cette fermeture.
Pour cela il faut utiliser la fonction mysql_close().
Code-source php
  1. mysql_close();
 
Dans le cas où plusieurs connexions sont ouverte mysql_close() prendra en paramètre l'identifiant de la connexion à fermer.
Code-source php
  1. mysql_close($db);
 

7. D'autres fonctions utiles avec MySQL

PHP dispose d'autres fonctions très utiles avec MySQL.
Celles-ci ne sont pas indispensable pour récupérer, traiter et afficher des données mais s'avèreront très utiles pour faciliter le développement de vos applications PHP/MySQL.
mysql_real_escape_string()
Cette fonction est très importante : elle doit toujours être utilisée pour protéger vos données des injections SQL. De plus elle est très utile puisqu'elle permet d'échapper les caractères spéciaux de vos requêtes (ce qui vous économisera l'utilisation d'un addslashes();)
Code-source php
  1. $login = mysql_real_escape_string($_POST['login']);
  2. $password = mysql_real_escape_string($_POST['password']);
  3. $sql = mysql_query("INSERT INTO table_membre (id, login, password) VALUES ('', $login, $password)");
 
mysql_free_result()
Cette fonction permet de libérer toutes les ressources utilisées (mémoire) par la ressource résultant d'une requête indiquée en paramètres.
Code-source php
  1. $sql = mysql_query("SELECT login, password FROM table_membre");
  2. $tab = mysql_fetch_assoc($sql);
  3. mysql_free_result($sql);
 
mysql_insert_id()
Cette fonction retourne le dernier identifiant généré par la dernière requête INSERT sur un champ MySQL en AUTO_INCREMENT. Elle retourne 0 dans le cas où aucun identifiant n'a été généré et la valeur booléenne FALSE si aucune connexion au server MySQL n'est établie.
Code-source php
  1. $sql = mysql_query("INSERT INTO table_membre (id, login, password) VALUES ('', 'netger', 'xxxxxx')");
  2. echo mysql_insert_id();
 
mysql_num_rows()
Cette fonction retourne le nombre de ligne résultant d'une requête SELECT.
Code-source php
  1. $sql = mysql_query("SELECT login, password FROM table_membre");
  2. echo mysql_num_rows();
 
mysql_error()
Cette fonction retourne le dernier message d'erreur généré par une requête MySQL.
Code-source php
  1. $sql = mysql_query("SELECT login, password FROM table_membre");
  2. if(!$sql) echo mysql_error();
 
 
  • Rédiger un commentaire
  • Afficher les commentaires (0)
Vous devez être identifié pour poster un commentaire
Aucun commentaire