English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come ordinare e visualizzare i dati in una tabella MySQL in ordine crescente o decrescente utilizzando PHP.
ORDER BYLa clause può essere usata conSELECTLa combinazione di queste espressioni, per visualizzare i dati di una tabella ordinata per un campo specifico. La clause ORDER BY ti permette di definire il nome del campo da ordinare e la direzione dell'ordinamento (crescente o decrescente).
La sintassi di base di questa clause può essere fornita nel modo seguente:
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC
Usiamo una query SELECT con il sottoquery ORDER BY per eseguire una query SQL, quindi eseguiamo la query passandola alla funzione PHP mysqli_query() per ottenere dati ordinati.
+----+------------+-----------+----------------------+ | 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] | +----+------------+-----------+----------------------+
Di seguito, nell'esempio, il codice PHP seleziona tutte le righe dalla tabella personsfirst_nameLe colonne vengono ordinate alfabeticamente nei risultati.
<?php /* Tentativo di connessione al server MySQL. Supponiamo che tu stia eseguendo MySQL. Server con impostazioni predefinite (utente senza password "root") */ $link = mysqli_connect("localhost", "root", "", "demo"); //检查连接 if($link === false){ die("Errore: Impossibile connettersi. ". mysqli_connect_error()); } //Prova a eseguire una query SELECT utilizzando il sottoquery ORDER BY $sql = "SELECT * FROM persons 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>"; // 关闭结果集 mysqli_free_result($result); } else{ echo "Non è stato trovato alcun record corrispondente alla tua ricerca."; } } else{ echo "Errore: Impossibile eseguire $sql. ". mysqli_error($link); } //Chiudere la connessione mysqli_close($link); ?>
<?php /* Tentativo di connessione al server MySQL. Supponiamo che tu stia eseguendo MySQL. Server con impostazioni predefinite (utente senza password "root") */ $mysqli = new mysqli("localhost", "root", "", "demo"); //检查连接 if($mysqli === false) { die("Errore: Impossibile connettersi. ". $mysqli->connect_error); } //尝试选择查询执行 with order by clause $sql = "SELECT * FROM persons 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>"; // 释放结果集 $result->free(); } else{ echo "Non è stato trovato alcun record corrispondente alla tua ricerca."; } } else{ echo "Errore: Impossibile eseguire $sql. ". $mysqli->error; } //Chiudere la connessione $mysqli->close(); ?>
<?php /* Tentativo di connessione al server MySQL. Supponiamo che tu stia eseguendo MySQL. Server con impostazioni predefinite (utente senza password "root") */ try { $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //将PDO错误模式设置为异常 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ die("Errore: Impossibile connettersi. ". $e->getMessage()); } //尝试选择查询执行 try { $sql = "SELECT * FROM persons 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>"; //Rilasciare il set di risultati unset($result); } else{ echo "Non è stato trovato alcun record corrispondente alla tua ricerca."; } } catch(PDOException $e){ die("Errore: Impossibile eseguire $sql. " . $e->getMessage()); } //Chiudere la connessione unset($pdo); ?>
Dopo aver ordinato i risultati, il set di risultati sarà come segue:
+----+------------+-----------+----------------------+ | 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] | +----+------------+-----------+----------------------+
Suggerimento:Per impostazione predefinita, la clausola ORDER BY ordina i risultati in ordine ascendente. Se si desidera ordinare i record in ordine discendente, è possibile utilizzare la parola chiave DESC.