MySQL Interrogation de données

Utilisation de la base de données MySQL : l'instructionSELECTpour interroger des données.

Vous pouvez utilisermysql>pour interroger des données dans la base de données à partir de la fenêtre d'invite de commandes, ou interroger des données via des scripts PHP.

Syntaxe

Voici la syntaxe générale de SELECT pour interroger des données dans la base de données MySQL :

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];

Description du paramètre :

  • column1, column2, ... sont les noms des colonnes que vous souhaitez sélectionner. Si vous utilisez*signifie sélectionner toutes les colonnes.
  • table_nameest le nom de la table à partir de laquelle vous souhaitez interroger des données.
  • WHERE conditionest une clause facultative utilisée pour spécifier des conditions de filtre, ne renvoyant que les lignes qui remplissent les conditions.
  • ORDER BY column_name [ASC | DESC]est une clause facultative utilisée pour spécifier l'ordre de tri du jeu de résultats ; la valeur par défaut est l'ordre croissant (ASC).
  • LIMIT numberest une clause facultative utilisée pour limiter le nombre de lignes renvoyées.

Exemples d'application simples de l'instruction SELECT de MySQL :

Exemple

-- Sélectionner toutes les lignes de toutes les colonnes
SELECT * FROM users;

-- Sélectionner toutes les lignes de colonnes spécifiques
SELECT username, email FROM users;

-- Ajouter une clause WHERE pour sélectionner les lignes qui satisfont la condition
SELECT * FROM users WHERE is_active = TRUE;

-- Ajouter une clause ORDER BY pour trier par une colonne dans l'ordre croissant
SELECT * FROM users ORDER BY birthdate;

-- Ajouter une clause ORDER BY pour trier par une colonne dans l'ordre décroissant
SELECT * FROM users ORDER BY birthdate DESC;

-- Ajouter une clause LIMIT pour limiter le nombre de lignes renvoyées
SELECT * FROM users LIMIT 10;

L'instruction SELECT peut être flexible ; nous pouvons combiner et utiliser ces clauses selon les besoins réels, par exemple utiliser les clauses WHERE et ORDER BY ensemble, ou utiliser LIMIT pour contrôler le nombre de lignes renvoyées.

DansWHEREDans la clause, vous pouvez utiliser divers opérateurs conditionnels (tels que=, <, >, <=, >=, !=), des opérateurs logiques (tels queAND, OR, NOT), et des caractères génériques (tels que%), etc.

Voici quelques exemples d'instructions SELECT avancées :

Exemple

-- Utiliser l'opérateur AND et un caractère générique
SELECT * FROM users WHERE username LIKE 'j%' AND is_active = TRUE;

-- Utiliser l'opérateur OR
SELECT * FROM users WHERE is_active = TRUE OR birthdate < '1990-01-01';

-- Utiliser la clause IN
SELECT * FROM users WHERE birthdate IN ('1990-01-01', '1992-03-15', '1993-05-03');

Récupérer des données via l'invite de commandes

Dans l'exemple suivant, nous allons utiliser la commande SQL SELECT pour récupérer des données à partir de la table de données MySQL example_tbl :

Exemple

L'exemple suivant renverra tous les enregistrements de la table de données example_tbl :

Lire la table de données :

select * from example_tbl;

Résultat de sortie :


Récupérer des données à l'aide de scripts PHP

Utilisez la fonction PHPmysqli_query()et la commandeSQL SELECTpour récupérer des données.

Cette fonction est utilisée pour exécuter des commandes SQL, puis via la fonction PHPmysqli_fetch_array() pour utiliser ou afficher toutes les données interrogées.

mysqli_fetch_array() La fonction récupère une ligne du jeu de résultats sous forme de tableau associatif, de tableau numérique, ou les deux. Renvoie un tableau généré à partir de la ligne récupérée du jeu de résultats, ou false s'il n'y a plus de lignes.

L'exemple suivant lit tous les enregistrements de la table de données example_tbl.

Exemple

Essayez l'exemple suivant pour afficher tous les enregistrements de la table de données example_tbl.

Récupérez les données à l'aide du paramètre MYSQLI_ASSOC de mysqli_fetch_array :

<?php $dbhost = 'localhost'; //adresse de l'hôte du serveur MySQL $dbuser = 'root'; //nom d'utilisateur MySQL $dbpass = '123456'; //Mot de passe de l'utilisateur MySQL $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Échec de la connexion :' . mysqli_error($conn)); } //Définir l'encodage pour éviter le texte chinois illisible mysqli_query($conn , "set names utf8"); $sql = 'SELECT example_id, example_title, example_author, submission_date FROM example_tbl'; mysqli_select_db( $conn, 'EXAMPLE' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('Impossible de lire les données :' . mysqli_error($conn)); } echo '<h2>Exemple de test mysqli_fetch_array</h2>'; echo '<table border="1"><tr><td>ID du tutoriel</td><td>Titre</td><td>Auteur</td><td>Date de soumission</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) { echo "<tr><td> {$row['example_id']}</td> ". "<td>{$row['example_title']} </td> ". "<td>{$row['example_author']} </td> ". "<td>{$row['submission_date']} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

Le résultat de sortie est le suivant :

Dans l'exemple ci-dessus, chaque ligne d'enregistrement lue est affectée à la variable $row, puis chaque valeur est imprimée.

Remarque :N'oubliez pas que si vous devez utiliser des variables dans une chaîne, placez les variables entre accolades.

Dans l'exemple ci-dessus, le deuxième paramètre de la fonction PHP mysqli_fetch_array() estMYSQLI_ASSOC, la définition de ce paramètre fait que le résultat de la requête renvoie un tableau associatif, et vous pouvez utiliser les noms de champs comme index du tableau.

PHP fournit une autre fonctionmysqli_fetch_assoc(), qui récupère une ligne de l'ensemble de résultats sous forme de tableau associatif. Retourne un tableau associatif généré à partir de la ligne récupérée de l'ensemble de résultats, ou false s'il n'y a plus de lignes.

Exemple

Essayez l'exemple suivant, qui utilise la fonctionmysqli_fetch_assoc()pour afficher tous les enregistrements de la table de données example_tbl :

Récupérer des données avec mysqli_fetch_assoc :

<?php $dbhost = 'localhost:3306'; //Adresse de l'hôte du serveur MySQL $dbuser = 'root'; //nom d'utilisateur MySQL $dbpass = '123456'; //Mot de passe de l'utilisateur MySQL $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Échec de la connexion :' . mysqli_error($conn)); } //Définir l'encodage pour éviter le texte chinois illisible mysqli_query($conn , "set names utf8"); $sql = 'SELECT example_id, example_title, example_author, submission_date FROM example_tbl'; mysqli_select_db( $conn, 'EXAMPLE' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('Impossible de lire les données :' . mysqli_error($conn)); } echo '<h2>Exemple de test mysqli_fetch_assoc</h2>'; echo '<table border="1"><tr><td>ID du tutoriel</td><td>Titre</td><td>Auteur</td><td>Date de soumission</td></tr>'; while($row = mysqli_fetch_assoc($retval)) { echo "<tr><td> {$row['example_id']}</td> ". "<td>{$row['example_title']} </td> ". "<td>{$row['example_author']} </td> ". "<td>{$row['submission_date']} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

Le résultat de sortie est le suivant :

Vous pouvez également utiliser la constante MYSQLI_NUM comme deuxième paramètre de la fonction PHP mysqli_fetch_array() pour retourner un tableau numérique.

Exemple

L'exemple suivant utilise le paramètre MYSQLI_NUM pour afficher tous les enregistrements de la table de données example_tbl :

Récupérer des données à l'aide du paramètre MYSQLI_NUM de mysqli_fetch_array :

<?php $dbhost = 'localhost:3306'; //Adresse de l'hôte du serveur MySQL $dbuser = 'root'; //nom d'utilisateur MySQL $dbpass = '123456'; //Mot de passe de l'utilisateur MySQL $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Échec de la connexion :' . mysqli_error($conn)); } //Définir l'encodage pour éviter le texte chinois illisible mysqli_query($conn , "set names utf8"); $sql = 'SELECT example_id, example_title, example_author, submission_date FROM example_tbl'; mysqli_select_db( $conn, 'EXAMPLE' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('Impossible de lire les données :' . mysqli_error($conn)); } echo '<h2>Exemple de test mysqli_fetch_array</h2>'; echo '<table border="1"><tr><td>ID du tutoriel</td><td>Titre</td><td>Auteur</td><td>Date de soumission</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo "<tr><td> {$row[0]}</td> ". "<td>{$row[1]} </td> ". "<td>{$row[2]} </td> ". "<td>{$row[3]} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

Le résultat de sortie est le suivant :

Les résultats de sortie des trois exemples ci-dessus sont tous identiques.


Libération de la mémoire

Après avoir exécuté l'instruction SELECT, il est de bonne habitude de libérer la mémoire du curseur.

La libération de la mémoire peut être effectuée en utilisant la fonction PHP mysqli_free_result().

L'exemple suivant montre comment utiliser cette fonction.

Exemple

Essayez l'exemple suivant :

Libérer la mémoire à l'aide de mysqli_free_result :

<?php $dbhost = 'localhost:3306'; //Adresse de l'hôte du serveur MySQL $dbuser = 'root'; //nom d'utilisateur MySQL $dbpass = '123456'; //Mot de passe de l'utilisateur MySQL $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Échec de la connexion :' . mysqli_error($conn)); } //Définir l'encodage pour éviter le texte chinois illisible mysqli_query($conn , "set names utf8"); $sql = 'SELECT example_id, example_title, example_author, submission_date FROM example_tbl'; mysqli_select_db( $conn, 'EXAMPLE' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('Impossible de lire les données :' . mysqli_error($conn)); } echo '<h2>Exemple de test mysqli_fetch_array</h2>'; echo '<table border="1"><tr><td>ID du tutoriel</td><td>Titre</td><td>Auteur</td><td>Date de soumission</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo "<tr><td> {$row[0]}</td> ". "<td>{$row[1]} </td> ". "<td>{$row[2]} </td> ". "<td>{$row[3]} </td> ". "</tr>"; } echo '</table>'; //Libérer la mémoire mysqli_free_result($retval); mysqli_close($conn); ?>

Le résultat de sortie est le suivant :

Autres extensions