MySQLi - Tri des résultats

Nous avons vu SQL SELECTcommande pour récupérer les données de la table MySQLi. Lorsque vous sélectionnez des lignes, le serveur MySQLi est libre de les renvoyer dans n'importe quel ordre, sauf indication contraire de votre part en indiquant comment trier le résultat. Mais vous triez un jeu de résultats en ajoutant une clause ORDER BY qui nomme la ou les colonnes sur lesquelles vous souhaitez trier.

Syntaxe

Voici la syntaxe SQL générique de la commande SELECT avec la clause ORDER BY pour trier les données de la table MySQL -

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
  • Vous pouvez trier le résultat renvoyé sur n'importe quel champ à condition que le fichier soit répertorié.

  • Vous pouvez trier les résultats sur plusieurs champs.

  • Vous pouvez utiliser le mot-clé ASC ou DESC pour obtenir le résultat par ordre croissant ou décroissant. Par défaut, c'est un ordre croissant.

  • Vous pouvez utiliser la clause WHERE ... LIKE de la manière habituelle pour mettre une condition.

Utilisation de la clause ORDER BY à l'invite de commandes

Cela utilisera la commande SQL SELECT avec la clause ORDER BY pour récupérer les données de la table MySQLi tutorials_inf.

Exemple

Essayez l'exemple suivant, qui renvoie le résultat par ordre décroissant.

[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>

Vérifiez que tous les identifiants sont répertoriés par ordre décroissant.

Utilisation de la clause ORDER BY dans un script PHP

Vous pouvez utiliser une syntaxe similaire de la clause ORDER BY dans la fonction PHP mysqli_query(). Cette fonction est utilisée pour exécuter la commande SQL et plus tard une autre fonction PHPmysqli_fetch_array() peut être utilisé pour récupérer toutes les données sélectionnées.

Exemple

Essayez l'exemple suivant, qui renvoie le résultat dans l'ordre décroissant de l'auteur du didacticiel.

<?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'exemple de sortie devrait être comme ceci -

Connected successfully
id	name
4	ram
3	raghu
2	johar
1	sai