PHP MySQL Sélection des données


Sélectionner des données d'une base de données MySQL

L'instruction SELECT est utilisée pour extraire des données d'une ou plusieurs tables :

SELECT column_name(s) FROM table_name

Nous pouvons également utiliser le caractère * pour sélectionner TOUTES les colonnes d'une table :

SELECT * FROM table_name

Pour en savoir plus sur SQL, veuillez visiter notre tutoriel SQL .


Sélectionner des données avec MySQLi

L'exemple suivant sélectionne les colonnes id, firstname et lastname de la table MyGuests et les affiche sur la page :

Exemple (MySQLi orienté objet)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Créer une 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 de chaque ligne
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Nom: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 résultats";
}
$conn->close();
?>
Exécuter l'exemple »

Lignes de code à expliquer à partir de l'exemple ci-dessus :

Tout d'abord, nous configurons une requête SQL qui sélectionne les colonnes id, firstname et lastname de la table MyGuests. La ligne suivante exécute la requête et stocke les données résultantes dans une variable appelée $result.

Ensuite, la fonction num_rows() vérifie s'il y a plus de zéro lignes retournées.

Si des lignes sont retournées, la fonction fetch_assoc() place tous les résultats dans un tableau associatif que nous pouvons parcourir. La boucle while() parcourt l'ensemble des résultats et affiche les données des colonnes id, firstname et lastname.

L'exemple suivant montre la même chose que l'exemple ci-dessus, de manière procédurale avec MySQLi :

Exemple (MySQLi procédural)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Créer une 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 de chaque ligne
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Nom: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 résultats";
}

mysqli_close($conn);
?>
Exécuter l'exemple »


Vous pouvez également afficher le résultat dans un tableau HTML :

Exemple (MySQLi orienté objet)

<?php
echo "<table><tr><th>ID</th><th>Nom</th></tr>";
// afficher les données de chaque ligne
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 résultats";
}
$conn->close();
?>
Exécuter l'exemple »

Sélectionner des données avec PDO (+ instructions préparées)

L'exemple suivant utilise des instructions préparées.

Il sélectionne les colonnes id, firstname et lastname de la table MyGuests et les affiche 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 de famille</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 tableau résultant comme 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>";
?>
Exécuter l'exemple »