Programmation PHP/MySQL
PHP offre plusieurs fonctions d’interaction avec MySQL.
mysql_connect()
modifier
La fonction mysql_connect()
est obsolète en PHP7, et remplacée par la classe mysqli
.
Connexion
modifier$user="BDDUSER";
$pass="BDDPASS";
$db="BDDNAME";
$table="demande_intervention";
$link=mysql_connect("localhost",$user,$pass); // Préproduction locale de BDDADRESSE
if (!$link)
die("Impossible de se connecter à mysql");
mysql_select_db($db,$link)
or die ("Impossible d'ouvrir $db :".mysql_error());
$query="insert into $table values($znom,$ztel,$znomach,zlieu,zdate)";
mysql_query($query,$link)
or die("Impossible d'ajouter des nouvelles données".mysql_error());
mysql_close($link);
Exécution d'une requête
modifierMaintenant que nous sommes connectés à notre base de données, il est possible d’exécuter des requêtes dessus. En voici un exemple
mysql_fetch_assoc
) $requete = "SELECT * FROM NOMTABLE";
$res = mysql_query($requete);
//On obtient alors tous les enregistrements présents dans la table nom table, et pour exploiter les enregistrements, on peut boucler de la manière suivante :
while ($enregistrement = mysql_fetch_assoc ($res) ) {
$nom = $enregistrement['NOM'];
$prenom = $enregistrement['PRENOM'];
$adresse1 = $enregistrement['ADRESSE1'];
$adresse2= $enregistrement['ADRESSE2'];
$tel1 = $enregistrement['TEL1'];
$tel2 = $enregistrement['TEL2'];
}
De cette manière on récupère un tableau associatif sous la forme Clé->Valeur pour chacun des enregistrements retournés par la requête.
Il existe d'autres fonctions pour cela :
mysql_num_rows()
: retourne le nombre de lignes données par la requête.mysql_fetch_row()
: identique àmysql_fetch_assoc
mais retourne un tableau simple indice->valeur.mysql_fetch_object()
: identique àmysql_fetch_assoc
mais retourne un objet.mysql_fetch_array()
: retourne les tableauxmysql_fetch_assoc()
etmysql_fetch_row()
.
Exemple :
mysql_fetch_object
) $requete = "SELECT * FROM NOMTABLE";
$res = mysql_query($requete);
while ($enregistrement = mysql_fetch_object ($res) ) {
$nom = $enregistrement->NOM;
$prenom = $enregistrement->PRENOM;
$adresse1 = $enregistrement->ADRESSE1;
$adresse2= $enregistrement->ADRESSE2;
$tel1 = $enregistrement->TEL1;
$tel2 = $enregistrement->TEL2;
}
Par défaut, mysql_fetch_array()
renvoie deux tableaux imbriqués : le tableau itératif et l'associatif. Pour n'en sélectionner qu'un, il faut remplir son deuxième paramètre avec[1] :
MYSQL_ASSOC
: pour le tableau associatif.MYSQL_NUM
: pour le tableau itératif.MYSQL_BOTH
: pour les deux (déjà par défaut).
Fermeture d'une connexion
modifier //Ferme la connexion MySQL
mysql_close ($ressource);
mysqli_connect()
modifierCette fonction fonctionne un peu comme mysql_connect()
[2] :
$link = mysqli_connect("BDDADRESSE","BDDUSER","BDDPASS","BDDNAME");
if (!$link) { die(mysqli_connect_errno()); }
mysqli_query($link, $query);
mysqli_close($link);
Les fonctions de manipulation de données ont pour préfixe "mysqli" avec les mêmes suffixes que celles du paragraphe précédent :
mysql_num_rows()
mysql_fetch_assoc()
mysql_fetch_row()
mysql_fetch_object()
Classe mysqli
modifierLa classe mysqli
permet les mêmes opérations que les fonctions précédentes, avec l'avantage de la programmation objet en plus (ex : héritage, introspection...) :
$query = 'SELECT * FROM NOMTABLE';
$link = new mysqli("BDDADRESSE","BDDUSER","BDDPASS","BDDNAME");
if ($link->connect_error) {
die(mysqli_connect_errno());
}
$result = $link->query($query);
while ($row = $result->fetch_assoc()) {
var_dump($row);
}
$result->close();
$link->close();
query
accepte les valeurs suivantes en second paramètre :
MYSQLI_STORE_RESULT
: récupère tous les résultats du serveur (valeur par défaut).MYSQLI_USE_RESULT
: récupère ligne par ligne.MYSQLI_ASYNC
: requête SQL asynchrone (non bloquante).