English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Grundanleitung

PHP fortgeschrittene Anleitung

PHP & MySQL

PHP Referenzhandbuch

PHP-MySQL-ORDER BY

In diesem Tutorial lernen Sie, wie Sie Daten in einer MySQL-Tabelle in aufsteigender oder absteigender Reihenfolge sortieren und anzeigen können, indem Sie PHP verwenden.

Ergebnisdaten sortieren

ORDER BYKlausel kann mitSELECTDer Ausdruck kann kombiniert werden, um Daten in einer Tabelle nach einem bestimmten Feld zu sortieren. Die ORDER BY-Klausel ermöglicht es Ihnen, den zu sortierenden Feldnamen und die Sortierrichtung (aufsteigend oder absteigend) zu definieren.

Die Grundgrammatik dieses Ausdrucks kann wie folgt dargestellt werden:

SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC

Lassen Sie uns eine SQL-Abfrage mit dem ORDER BY-Ausdruck durchführen, um eine geordnete Datenabfrage durchzuführen. Überlegen Sie sich die nachstehende Tabelle "persons" in der Demonstrationsdatenbank:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email              |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  2 | John       | Rambo     | [email protected]   |
|  3 | Clark      | Kent      | [email protected]   |
|  4 | John       | Carter    | [email protected]  |
|  5 | Harry      | Potter    | [email protected] |
+----+------------+-----------+----------------------+

Im folgenden Beispiel wird PHP-Code aus der Tabelle "persons" alle Zeilen auswählen,first_nameDie Ergebnisse werden nach Alphabetischer Reihenfolge sortiert.

Beispiel: Prozeduraler Ansatz

<?php
/* Versuchen, eine Verbindung zum MySQL-Server herzustellen. Angenommen, Sie führen MySQL aus.
Dienst mit Standardeinstellungen (Benutzer "root" ohne Passwort) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Verbindung überprüfen
if($link === false){
    die("Fehler: Verbindungsfehler. " . mysqli_connect_error());
}
 
//Versuchen, SELECT-Abfrage mit ORDER BY Klausel auszuführen
$sql = "SELECT * FROM Personen ORDER BY first_name";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" \. $_row['id'] \. "</td>";
                echo "<td>" \. $_row['first_name'] \. "</td>";
                echo "<td>" \. $_row['last_name'] \. "</td>";
                echo "<td>" \. $_row['email'] \. "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Ergebnisset schließen
        mysqli_free_result($result);
    } else{
        echo "Kein Datensatz gefunden, der Ihrer Abfrage entspricht.";
    }
} else{
    echo "Fehler: Ausführung fehlgeschlagen $sql. " . mysqli_error($link);
}
 
//Verbinde schließen
mysqli_close($link);
?>

Beispiel: Objektorientierte Methode

<?php
/* Versuchen, eine Verbindung zum MySQL-Server herzustellen. Angenommen, Sie führen MySQL aus.
Dienst mit Standardeinstellungen (Benutzer "root" ohne Passwort) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Verbindung überprüfen
if($mysqli === false){
    die("Fehler: Verbindungsfehler. " . $mysqli->connect_error);
}
 
//Versuchen, Abfrage mit ORDER BY Klausel auszuführen
$sql = "SELECT * FROM Personen ORDER BY first_name";
if($result = $mysqli->query($sql)){
    if($_result->num_rows > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($_row = $_result->fetch_array()){
            echo "<tr>";
                echo "<td>" \. $_row['id'] \. "</td>";
                echo "<td>" \. $_row['first_name'] \. "</td>";
                echo "<td>" \. $_row['last_name'] \. "</td>";
                echo "<td>" \. $_row['email'] \. "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Freigabe der Ergebnismenge
        $result->free();
    } else{
        echo "Kein Datensatz gefunden, der Ihrer Abfrage entspricht.";
    }
} else{
    echo "Fehler: Ausführung fehlgeschlagen $sql. " . $mysqli->error;
}
 
//Verbinde schließen
$mysqli->close();
?>

Beispiel: PDO-Methode

<?php
/* Versuchen, eine Verbindung zum MySQL-Server herzustellen. Angenommen, Sie führen MySQL aus.
Dienst mit Standardeinstellungen (Benutzer "root" ohne Passwort) */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ");
    //PDO-Fehlermodus auf Ausnahme setzen
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $_e){
    die("Fehler: Verbindungsfehler. " . $e->getMessage());
}
 
//Versuchen, die Abfrage auszuführen
try{
    $sql = "SELECT * FROM Personen ORDER BY first_name";
    $_result = $_pdo->query($_sql);
    if($_result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($_row = $_result->fetch()){
            echo "<tr>";
                echo "<td>" \. $_row['id'] \. "</td>";
                echo "<td>" \. $_row['first_name'] \. "</td>";
                echo "<td>" \. $_row['last_name'] \. "</td>";
                echo "<td>" \. $_row['email'] \. "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Freigabe der Ergebnismenge
        unset($result);
    } else{
        echo "Kein Datensatz gefunden, der Ihrer Abfrage entspricht.";
    }
} catch(PDOException $_e){
    die("Fehler: Der Befehl $_sql kann nicht ausgeführt werden. \->getMessage());
}
 
//Verbinde schließen
unset($pdo);
?>

Nachdem die Ergebnisse sortiert wurden, wird die Ergebnismenge wie folgt aussehen:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email              |
+----+------------+-----------+----------------------+
|  3 | Clark      | Kent      | [email protected]   |
|  5 | Harry      | Potter    | [email protected] |
|  2 | John       | Rambo     | [email protected]   |
|  4 | John       | Carter    | [email protected]  |
|  1 | Peter      | Parker    | [email protected] |
+----+------------+-----------+----------------------+

Hinweis:In der Standardkonfiguration sortiert der ORDER BY-Ausdruck die Ergebnisse in aufsteigender Reihenfolge. Um die Zeilen in absteigender Reihenfolge zu sortieren, kann der Schlüsselwort DESC verwendet werden.