PHP – MYSQL
MySQL est une base de données implémentant le langage de requête SQL. Avec MySQL vous
pouvez créer plusieurs bases de données sur un serveur. Une base est composée de tables contenant
des enregistrements .
CONNEXION À UNE BASE : mysqli_connect , mysqli_close
Pour se connecter à une base avec PHP, il faut spécifier :
➢ un nom ou l'IP du serveur MYSQL
➢ un nom d’utilisateur
➢ un mot de passe
➢ un nom de base.
La fonction de connexion : mysqli_connect($server,$user,$password,$bdname)
permet de se connecter au serveur $server en tant qu’utilisateur $user avec le mot de passe
$password sur une base de données $bdname. Elle retourne l’identifiant de connexion si
succès, FALSE sinon.
Cette fonction retourne TRUE en cas de succès, sinon FALSE
mysqli_close() : permet de fermer la connexion
Exemple :
<?php
$server = "localhost";
$user = "root";
$password = "sio";
$dbname = "cinema";
// Create connection
$conn = new mysqli($server, $user, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
On pourra avantageusement intégrer ce code dans un fichier que l’on pourra joindre par
require_once(). C’est un moyen de sécuriser le script de connexion.
INTERROGATION : mysqli_query
Pour interroger une base de donnée, c'est à dire effectuer une requête, on utilise la
fonction : mysql_query($conn,$requete) .
Cette fonction prend pour paramètre deux éléments l'identifiant de la connection et la requête
écrite en SQL, elle retourne un identificateur de résultat ou FALSE si échec.
Exemple :
$requete = ('' SELECT * FROM acteur '');
$result = mysqli_query($conn,$requete);
L’identificateur de résultat $result permettra à d’autres fonctions d’extraire ligne par ligne les
données retournées par le serveur.
Pour gérer les éventuelles erreurs de rédaction de vos requêtes, vous pouvez utiliser le code
suivant :
if ( !( $result = mysqli_query( $conn,$requete )))
die( 'Erreur de la requete : '.$requete );
On indique que si $result retourne FALSE, on arrête le traitement ( die) et on affiche la
requête.
EXTRACTION DES DONNÉES
Une fois la requête effectuée et l’identificateur de résultat acquis, il ne reste plus qu’à
extraire les données retournées par le serveur.
L’affichage des résultats d’une requête se fait ligne par ligne. Une boucle permettra de
recueillir chacune des lignes à partir de l’identifiant de résultat ($result).
Extraction des données dans un tableau classique : mysqli_fetch_row($result)
La fonction retourne une ligne de résultat sous la forme d’un tableau. Les éléments du tableau
étant les valeurs des attributs de la ligne. On accède aux données à partir des indices du
tableau. Elle retourne FALSE s’il n’y a plus aucune ligne à extraire.
<?php
require_once("[Link]");
$requete = ("SELECT * FROM Artiste ");
if ( !($result = mysqli_query($conn,$requete) ) )
{
die("Erreur dans la requete: " . mysqli_error($conn));
}
//On teste si la requete retourne des résultats
if (mysqli_num_rows($result) > 0) {
// On exploite chaque ligne de résultat
while( $row = mysqli_fetch_array($result) ) {
//print_r($row);
echo "id: " . $row["idActeur"]. " - nom: " . $row[1]. " prenom
: " . $row[2]. "<br>";
}
} else {
echo "0 résultat";
}
mysqli_close($conn);
?>
Extraction des données dans un tableau associatif :mysqli_fetch_assoc($result)
La fonction retourne un tableau associatif. Les clés étant les noms des attributs et leurs valeurs
associées leurs valeurs respectives. Elle retourne FALSE s’il n’y a plus aucune ligne.
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["idrealisateur"]. " - Nom: " . $row["nom"]. " " . $row["prenom"].
"<br>";
}
Ici, on accède aux valeurs de la ligne par la clé dans le tableau associatif.
Extraction des données dans le tableau de votre choix : mysql_fetch_array($result)
Retourne un tableau de chaînes qui correspond à la ligne récupérée ou FALSE s'il n'y a plus
de lignes. . Donc l'utilisation de la fonction mysql_fetch_array($result) retourne à la fois
un tableau contenant des indices associatifs et numériques.
Une chose importante à noter est que l'utilisation de mysqli_fetch_array() n'est pas
significativement plus lent que l'utilisation de mysqli_fetch_row() ou mysqli_fetch_assoc() ,
alors qu'elle fournit plus d'informations. Il est donc préférable d'utiliser cette fonction, elle va
vous permettre d'extraire les données comme vous le souhaitez.
while($row = mysqli_fetch_array($result)) {
echo "id: " . $row[0]. " - Nom: " . $row["nom"]. " " . $row[2]. "<br>";
}