PHP MySQL Utiliser la clause WHERE
Sélectionner et filtrer les données d'une base de données MySQL
La clause WHERE est utilisée pour filtrer les enregistrements.
La clause WHERE est utilisée pour extraire uniquement les enregistrements qui remplissent une condition spécifiée.
SELECT column_name(s)
FROM table_name WHERE column_name operator value
Pour en savoir plus sur SQL, veuillez consulter notre didacticiel SQL .
Sélectionner et filtrer les données avec MySQLi
L'exemple suivant sélectionne les colonnes id, firstname et lastname de la table MyGuests où le nom est "Doe", et l'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 WHERE
lastname='Doe'";
$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 configurons la requête SQL qui sélectionne les colonnes id, firstname et lastname de la table MyGuests où le nom de famille est "Doe". La ligne de code suivante exécute la requête et place les données résultantes dans une variable appelée $result.
Ensuite, le function num_rows()
vérifie s'il y a plus de zéro lignes renvoyées.
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
WHERE lastname='Doe'";
$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 WHERE
lastname='Doe'";
$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 où le nom est "Doe", et l'affiche dans un tableau 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
WHERE lastname='Doe'");
$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>";
?>