PHP MySQL Verwenden Sie die ORDER BY-Klausel
Daten aus einer MySQL-Datenbank auswählen und bestellen
Die ORDER BY-Klausel wird verwendet, um die Ergebnismenge in aufsteigender oder absteigender Reihenfolge zu sortieren.
Die ORDER BY-Klausel sortiert die Datensätze standardmäßig in aufsteigender Reihenfolge. Um die Datensätze in absteigender Reihenfolge zu sortieren, verwenden Sie das Schlüsselwort DESC.
SELECT column_name(s)
FROM table_name ORDER BY column_name(s) ASC|DESC
Um mehr über SQL zu erfahren, besuchen Sie bitte unser SQL-Tutorial .
Daten auswählen und bestellen mit MySQLi
Im folgenden Beispiel werden die Spalten id, firstname und lastname aus der Tabelle MyGuests ausgewählt. Die Datensätze werden nach der Spalte Nachname sortiert:
Beispiel (MySQLi objektorientiert)
<?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();
?>
Codezeilen zur Erläuterung aus dem obigen Beispiel:
Zuerst richten wir die SQL-Abfrage ein, die die Spalten „id“, „firstname“ und „lastname“ aus der Tabelle „MyGuests“ auswählt. Die Datensätze werden nach der Spalte Nachname sortiert. Die nächste Codezeile führt die Abfrage aus und fügt die resultierenden Daten in eine Variable namens $result ein.
Dann wird function num_rows()
überprüft, ob mehr als null Zeilen zurückgegeben werden.
Wenn mehr als null Zeilen zurückgegeben werden, fügt die Funktion fetch_assoc()
alle Ergebnisse in ein assoziatives Array ein, das wir durchlaufen können. Die while()
Schleife durchläuft die Ergebnismenge und gibt die Daten aus den Spalten id, firstname und lastname aus.
Das folgende Beispiel zeigt dasselbe wie das obige Beispiel auf die prozedurale Weise von MySQLi:
Beispiel (MySQLi-Prozedur)
<?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);
?>
Sie können das Ergebnis auch in eine HTML-Tabelle einfügen:
Beispiel (MySQLi objektorientiert)
<?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();
?>
Daten mit PDO auswählen (+ vorbereitete Anweisungen)
Das folgende Beispiel verwendet vorbereitete Anweisungen.
Hier wählen wir die Spalten id, firstname und lastname aus der MyGuests-Tabelle aus. Die Datensätze werden nach der Spalte „Nachname“ geordnet und in einer HTML-Tabelle angezeigt:
Beispiel (PDO)
<?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>";
?>