PHP MySQL Lire des données

Lire des données depuis une base de données MySQL

L'instruction SELECT est utilisée pour lire des données depuis une table :

SELECT column_name(s) FROM table_name

Nous pouvons utiliser le signe * pour lire tous les champs de la table :

SELECT * FROM table_name

Pour en savoir plus sur SQL, veuillez consulter notreTutoriel SQL。


Utilisation de MySQLi

Dans l'exemple suivant, nous lisons les colonnes id, firstname et lastname de la table MyGuests dans la base de données myDB et les affichons sur la page :

Exemple (MySQLi - orienté objet)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //Créer la connexion $conn = new mysqli($servername, $username, $password, $dbname); // Vérifier la connexion if ($conn->connect_error) { die("Échec de la connexion :" . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = $conn->query($sql); if ($result->num_rows > 0) { //Afficher les données while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Nom : " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 résultats"; } $conn->close(); ?>

L'analyse du code ci-dessus est la suivante :

Tout d'abord, nous définissons l'instruction SQL pour lire les trois champs id, firstname et lastname de la table MyGuests. Ensuite, nous utilisons cette instruction SQL pour récupérer le jeu de résultats depuis la base de données et l'affecter à la variable $result.

La fonction num_rows() vérifie les données renvoyées.

Si plusieurs lignes sont renvoyées, la fonction fetch_assoc() place le jeu de résultats dans un tableau associatif et l'affiche dans une boucle. La boucle while() parcourt le jeu de résultats et affiche les valeurs des trois champs id, firstname et lastname.

L'exemple suivant utilise l'approche procédurale MySQLi, avec des effets similaires au code ci-dessus :

Exemple (MySQLi - procédural)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //Créer la connexion $conn = mysqli_connect($servername, $username, $password, $dbname); // Vérifier la connexion if (!$conn) { die("Échec de la connexion :" . mysqli_connect_error()); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { //Afficher les données while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Nom : " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 résultat"; } mysqli_close($conn); ?>


Utilisation de PDO (+ requêtes préparées)

L'exemple suivant utilise des requêtes préparées.

Il sélectionne les champs id, firstname et lastname de la table MyGuests et les place dans un tableau HTML :

Exemple (PDO)

<?php echo "<table style='border: solid 1px black;'>"; echo "<tr><th>Id</th><th>Prénom</th><th>Nom</th></tr>"; class TableRows extends RecursiveIteratorIterator { function __construct($it) { parent::__construct($it, self::LEAVES_ONLY); } function current() { return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>"; } function beginChildren() { echo "<tr>"; } function endChildren() { echo "</tr>" . "\n"; } } $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDBPDO"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests"); $stmt->execute(); //Définir le jeu de résultats comme un tableau associatif $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { echo $v; } } catch(PDOException $e) { echo "Erreur : " . $e->getMessage(); } $conn = null; echo "</table>"; ?>

Autres extensions