English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de PHP

Tutoriales avanzados de PHP

PHP & MySQL

Manual de referencia PHP

ORDER BY en PHP

En este tutorial, aprenderás a ordenar y mostrar datos de tablas MySQL en orden ascendente o descendente utilizando PHP.

Ordenamiento de conjuntos de resultados

ORDER BYLa cláusula puede combinarse conSELECTSe pueden combinar las cláusulas para ver los datos de la tabla ordenados por un campo específico. La cláusula ORDER BY permite definir el nombre del campo utilizado para la ordenación y la dirección de ordenación, ascendente o descendente.

La gramática básica de esta cláusula se puede presentar de la siguiente manera:

SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC

Vamos a usar la cláusula ORDER BY en la sentencia SELECT para realizar una consulta SQL, luego ejecutaremos la consulta mediante la función mysqli_query() de PHP para obtener datos ordenados. Considera la siguiente tabla persons en la base de datos de demostración:

+----+------------+-----------+----------------------+
| 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]                                                                 |
+----+------------+-----------+----------------------+

A continuación, se muestra el código PHP que selecciona todas las filas de la tabla persons,first_nameLos resultados se ordenan alfabéticamente por columnas.

Ejemplo: modo procedimental

<?php
/* intentar conectar al servidor MySQL. Supongamos que está ejecutando MySQL.
servidor con configuración predeterminada (usuario sin contraseña "root"); */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//verificar la conexión
if($link === false){
    die("error: no se puede conectar. " . mysqli_connect_error());
}
 
//intentar ejecutar la consulta SELECT con la cláusula ORDER BY
$sql = "SELECT; * FROM personas ORDER BY nombre_primevo;
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        
            echo \
                echo \/
                /
                echo \/
                /
            echo \/tr>";
        while($row = mysqli_fetch_array($result)){
            echo \
                echo \/td>";
                echo \/td>";
                echo \/td>";
                echo \/td>";
            echo \/tr>";
        }
        echo \/table>";
        //cerrar el conjunto de resultados
        mysqli_free_result($result);
    } else{
        echo \
    }
} else{
    echo "error: no se puede ejecutar $sql. " . mysqli_error($link);
}
 
//Cerrar conexión
mysqli_close($link);
?>

ejemplo: método orientado a objetos

<?php
/* intentar conectar al servidor MySQL. Supongamos que está ejecutando MySQL.
servidor con configuración predeterminada (usuario sin contraseña "root"); */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//verificar la conexión
if($mysqli === false){
    die("error: no se puede conectar. " . $mysqli;->connect_error);
}
 
//intentar seleccionar y ejecutar la consulta con cláusula ORDER BY
$sql = "SELECT; * FROM personas ORDER BY nombre_primevo;
if($result = $mysqli->query($sql)){
    if($result->num_rows > 0){
        
            echo \
                echo \/
                /
                echo \/
                /
            echo \/tr>";
        ->fetch_array()){
            echo \
                echo \/td>";
                echo \/td>";
                echo \/td>";
                echo \/td>";
            echo \/tr>";
        }
        echo \/table>";
        // Liberar la colección de resultados
        $result->free();
    } else{
        echo \
    }
} else{
    echo "error: no se puede ejecutar $sql. " . $mysqli;->error;
}
 
//Cerrar conexión
$mysqli->close();
?>

ejemplo: método PDO

<?php
/* intentar conectar al servidor MySQL. Supongamos que está ejecutando MySQL.
servidor con configuración predeterminada (usuario sin contraseña "root"); */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ");
    //establecer el modo de error PDO en excepción
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("error: no se puede conectar. " . $e;->getMessage());
}
 
//intentar seleccionar y ejecutar la consulta
try{
    $sql = "SELECT; * FROM personas ORDER BY nombre_primevo;
    $result = $pdo->query($sql);
    if($result->rowCount() > 0){
        
            echo \
                echo \/
                /
                echo \/
                /
            echo \/tr>";
        -
            echo \
                echo \/td>";
                echo \/td>";
                echo \/td>";
                echo \/td>";
            echo \/tr>";
        }
        echo \/table>";
        //Liberar la colección de resultados
        unset($result);
    } else{
        echo \
    }
} catch(PDOException $e){
    die("Error: No se puede ejecutar $sql. \->getMessage());
}
 
//Cerrar conexión
unset($pdo);
?>

Después de ordenar los resultados, la colección de resultados se mostrará como sigue:

+----+------------+-----------+----------------------+
| 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]                                                                 |
+----+------------+-----------+----------------------+

Consejo:Por defecto, la cláusula ORDER BY ordena los resultados en orden ascendente. Si desea ordenar los registros en orden descendente, puede usar la palabra clave DESC.