MySQLi - Ordinamento dei risultati
Abbiamo visto SQL SELECTcomando per recuperare i dati dalla tabella MySQLi. Quando si selezionano le righe, il server MySQLi è libero di restituirle in qualsiasi ordine, a meno che non venga indicato diversamente dicendo come ordinare il risultato. Ma si ordina un set di risultati aggiungendo una clausola ORDER BY che denomina la colonna o le colonne in base alle quali si desidera ordinare.
Sintassi
Ecco la sintassi SQL generica del comando SELECT insieme alla clausola ORDER BY per ordinare i dati dalla tabella MySQL -
SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
È possibile ordinare il risultato restituito su qualsiasi campo a condizione che il file venga elencato.
Puoi ordinare il risultato su più di un campo.
È possibile utilizzare la parola chiave ASC o DESC per ottenere risultati in ordine crescente o decrescente. Per impostazione predefinita, è in ordine crescente.
Puoi usare la clausola WHERE ... LIKE nel solito modo per mettere condizione.
Utilizzo della clausola ORDER BY al prompt dei comandi
Questo utilizzerà il comando SQL SELECT con la clausola ORDER BY per recuperare i dati dalla tabella MySQLi tutorials_inf.
Esempio
Prova il seguente esempio, che restituisce il risultato in ordine decrescente.
[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_inf ORDER BY id desc;
+----+-------+
| id | name |
+----+-------+
| 4 | ram |
| 3 | raghu |
| 2 | johar |
| 1 | sai |
+----+-------+
4 rows in set (0.00 sec)
mysql>
Verifica che tutti gli ID siano elencati in ordine decrescente.
Utilizzo della clausola ORDER BY all'interno dello script PHP
È possibile utilizzare una sintassi simile della clausola ORDER BY nella funzione PHP mysqli_query(). Questa funzione viene utilizzata per eseguire il comando SQL e successivamente un'altra funzione PHPmysqli_fetch_array() può essere utilizzato per recuperare tutti i dati selezionati.
Esempio
Prova il seguente esempio, che restituisce il risultato in ordine decrescente dell'autore del tutorial.
<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '';
$dbname = 'TUTORIALS';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
if(! $conn ) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully</br>';
$sql = 'SELECT * from tutorials_inf ORDER BY id desc';
if($result = mysqli_query($conn, $sql)){
if(mysqli_num_rows($result) > 0){
echo "<table>";
echo "<tr>";
echo "<th>id</th>";
echo "<th>name</th>";
echo "</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_free_result($result);
} else {
echo "No records matching your query were found.";
}
} else {
echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
}
mysqli_close($conn);
?>
L'output di esempio dovrebbe essere così:
Connected successfully
id name
4 ram
3 raghu
2 johar
1 sai