PHP MySQL Gebruik de ORDER BY-clausule
Selecteer en bestel gegevens uit een MySQL-database
De ORDER BY-component wordt gebruikt om de resultatenset in oplopende of aflopende volgorde te sorteren.
De ORDER BY-component sorteert de records standaard in oplopende volgorde. Gebruik het trefwoord DESC om de records in aflopende volgorde te sorteren.
SELECT column_name(s)
FROM table_name ORDER BY column_name(s) ASC|DESC
Bezoek onze SQL-tutorial voor meer informatie over SQL .
Selecteer en bestel gegevens met MySQLi
In het volgende voorbeeld worden de kolommen id, voornaam en achternaam geselecteerd uit de tabel MyGuests. De records worden geordend op de kolom achternaam:
Voorbeeld (MySQLi objectgeoriënteerd)
<?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 ORDER BY lastname";
$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();
?>
Coderegels om uit het bovenstaande voorbeeld uit te leggen:
Eerst stellen we de SQL-query in die de kolommen id, firstname en lastname selecteert uit de MyGuests-tabel. De records worden geordend op de kolom achternaam. De volgende regel code voert de query uit en plaatst de resulterende gegevens in een variabele met de naam $result.
Vervolgens wordt function num_rows()
gecontroleerd of er meer dan nul rijen zijn.
Als er meer dan nul rijen worden geretourneerd, fetch_assoc()
plaatst de functie alle resultaten in een associatieve array die we kunnen doorlopen. De while()
lus loopt door de resultatenset en voert de gegevens uit de kolommen id, firstname en lastname uit.
Het volgende voorbeeld toont hetzelfde als het bovenstaande voorbeeld, op de MySQLi procedurele manier:
Voorbeeld (MySQLi procedureel)
<?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
ORDER BY lastname";
$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);
?>
U kunt het resultaat ook in een HTML-tabel plaatsen:
Voorbeeld (MySQLi objectgeoriënteerd)
<?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 ORDER BY lastname";
$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();
?>
Selecteer gegevens met BOB (+ voorbereide verklaringen)
In het volgende voorbeeld worden voorbereide instructies gebruikt.
Hier selecteren we de id, voornaam en achternaam kolommen uit de MyGuests tabel. De records worden gerangschikt op de achternaamkolom en worden weergegeven in een HTML-tabel:
Voorbeeld (BOB)
<?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
ORDER BY lastname");
$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>";
?>