English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá a ordenar e exibir dados em uma tabela MySQL em ordem crescente ou decrescente usando PHP.
ORDER BYA cláusula pode ser usada comSELECTA combinação de frases permite visualizar os dados da tabela ordenada por um campo específico. A cláusula ORDER BY permite definir o nome do campo de ordenação e a direção de ordenação em ordem crescente ou decrescente.
A sintaxe básica dessa cláusula pode ser dada da seguinte forma:
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC
Vamos usar a cláusula ORDER BY na consulta SELECT para fazer uma consulta SQL, e então executaremos a consulta passando para a função mysqli_query() do PHP para obter dados ordenados. Considere a tabela persons no banco de dados de demonstração a seguir:
+----+------------+-----------+----------------------+ | 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] | +----+------------+-----------+----------------------+
O código PHP do exemplo a seguir seleciona todas as linhas da tabela personsfirst_nameOs resultados são ordenados alfabeticamente pelas colunas.
<?php /* tentar conectar ao servidor MySQL. Supondo que você esteja executando MySQL. servidor com configurações padrão (usuário sem senha "root") */ $link = mysqli_connect("localhost", "root", "", "demo"); //verificar conexão if($link === false){ die("erro: não foi possível conectar. " . mysqli_connect_error()); } //tentar executar consulta SELECT usando cláusula 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>"; //fechar conjunto de resultados mysqli_free_result($result); } else{ echo "Não foi encontrado nenhum registro correspondente à sua consulta."; } } else{ echo "erro: não foi possível executar $sql. " . mysqli_error($link); } //Fechar conexão mysqli_close($link); ?>
<?php /* tentar conectar ao servidor MySQL. Supondo que você esteja executando MySQL. servidor com configurações padrão (usuário sem senha "root") */ $mysqli = new mysqli("localhost", "root", "", "demo"); //verificar conexão if($mysqli === false){ die("erro: não foi possível conectar. " . $mysqli->connect_error); } //tentar escolher consulta de execução com cláusula order by $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>"; // Liberar conjunto de resultados $result->free(); } else{ echo "Não foi encontrado nenhum registro correspondente à sua consulta."; } } else{ echo "erro: não foi possível executar $sql. " . $mysqli->error; } //Fechar conexão $mysqli->close(); ?>
<?php /* tentar conectar ao servidor MySQL. Supondo que você esteja executando MySQL. servidor com configurações padrão (usuário sem senha "root") */ try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //definir o modo de erro PDO como exceção $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ die("erro: não foi possível conectar. " . $e->getMessage()); } //tentar escolher consulta de execução 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>"; //Liberar conjunto de resultados unset($result); } else{ echo "Não foi encontrado nenhum registro correspondente à sua consulta."; } } catch(PDOException $e){ die("Erro: Não foi possível executar $sql. ". $e->getMessage()); } //Fechar conexão unset($pdo); ?>
Depois de ordenar os resultados, o conjunto de resultados será como follows:
+----+------------+-----------+----------------------+ | 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] | +----+------------+-----------+----------------------+
Dica:Por padrão, a cláusula ORDER BY ordena os resultados em ordem crescente. Para ordenar os registros em ordem decrescente, você pode usar a palavra-chave DESC.