PHP MySQL Sélectionner les données
Sélectionner des données à partir d'une base de données MySQL
L'instruction SELECT est utilisée pour sélectionner des données dans une ou plusieurs tables :
SELECT column_name(s)
FROM table_name
ou nous pouvons utiliser le caractère * pour sélectionner TOUTES les colonnes d'une table :
SELECT *
FROM table_name
Pour en savoir plus sur SQL, veuillez consulter notre didacticiel SQL .
Sélectionner les 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";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
Lignes de code à expliquer à partir de l'exemple ci-dessus :
Tout d'abord, nous mettons en place une requête SQL qui sélectionne les colonnes id, firstname et lastname de la table MyGuests. La ligne de code suivante exécute la requête et place 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 ligne renvoyée.
S'il y a plus de zéro ligne renvoyée, la fonction fetch_assoc()
place tous les résultats dans un tableau associatif que nous pouvons parcourir en boucle. La while()
boucle parcourt le jeu de résultats et génère les données des colonnes id, firstname et lastname.
L'exemple suivant montre la même chose que l'exemple ci-dessus, de la manière procédurale MySQLi :
Exemple (procédural MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
Vous pouvez également mettre le résultat dans un tableau HTML :
Exemple (MySQLi orienté objet)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th>ID</th><th>Name</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
?>
Sélectionnez les données avec PDO (+ déclarations 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 l'affiche dans une table HTML :
Exemple (AOP)
<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</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();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>