PHP MySQL The ORDER BY Clause
Select and Order Data From a MySQL Database
The SQL ORDER BY clause is used to sort the result-set in ascending or descending
order.
The ORDER BY clause sorts the records in ascending order by default. To sort
the records in descending order, use the DESC keyword.
SELECT column_name(s)
FROM table_name ORDER BY column_name(s) ASC|DESC
To learn more about SQL, please visit our SQL tutorial.
Select and Order By With MySQLi
The following example selects the id, firstname and lastname columns from the MyGuests table. The records will be ordered by the lastname column:
Example - MySQLi Object-oriented
<?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";
// Execute the SQL query
$result = $conn->query($sql);
// Process
the result set
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();
?>
Run example »
Code Explanation
First, we set up an SQL query that selects the id, firstname and lastname columns from the MyGuests table. The records will be ordered by the lastname column.
The next line of code, $conn->query($sql), runs the query and puts the resulting data into a
variable called $result.
Then, the line $result->num_rows>0 checks if there are more than
0
rows returned.
If there are more than 0 rows returned, the
function fetch_assoc() puts the result
set into an associative array that we can loop
through. The while() loop loops through the result set and outputs the data from
the id, firstname and lastname columns.
The following example shows the same as the example above, in the MySQLi procedural way:
Example - MySQLi Procedural
<?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);
?>
Run example »
Put Result in HTML Table
Here, we put the result in an HTML table:
Example - MySQLi Object-oriented
<?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();
?>
Run example »
Select and Order By With PDO
Here we select the id, firstname and lastname columns from the MyGuests table. The records will be ordered by the lastname column, and it will be displayed in an HTML table:
Example - PDO
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
die("Could not connect. " .
$e->getMessage());
}
try {
$sql = "SELECT id,
firstname, lastname FROM MyGuests ORDER BY lastname'";
// Execute the SQL query
$result = $conn->query($sql);
//
Process the result set
if ($result->rowCount() > 0) {
echo
"<table><tr><th>ID</th><th>Firstname</th><th>Lastname</th></tr>";
// Output data of each row
while($row = $result->fetch()) {
echo
"<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['firstname'] . "</td>";
echo "<td>" . $row['lastname'] . "</td>";
echo "</tr>";
}
echo "</table>";
unset($result);
else {
echo "No records
found.";
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
?>