Vaya al Contenido

PHP Cláusula ORDER BY - SuperHispano

Saltar menú
SuperHispano
+34 012 345 678
info@example.com
España 03:19:18 sábado 07/02/26
Saltar menú
Saltar menú
Saltar menú
Taller > PHP > Base de Datos MySQL

Cláusula ORDER BY en PHP y MySQL


Cuando trabajas con bases de datos, es común querer mostrar los resultados de una consulta de forma ordenada. La cláusula ORDER BY en MySQL nos permite hacer precisamente eso, ya sea en orden ascendente o descendente.
En este artículo, veremos cómo utilizar ORDER BY con PHP, utilizando tanto MySQLi como PDO.

¿Qué es la cláusula ORDER BY?


La cláusula ORDER BY se utiliza para ordenar los resultados de una consulta SQL de acuerdo con una o más columnas. De manera predeterminada, los resultados se ordenan en orden ascendente (de menor a mayor), pero también puedes utilizar el modificador DESC para ordenar los resultados en orden descendente.

Sintaxis básica


SELECT columna1, columna2 FROM tabla ORDER BY columna1 ASC|DESC;

ASC: Ordena en orden ascendente (opción predeterminada).
DESC: Ordena en orden descendente.

Uso de ORDER BY con MySQLi Orientado a Objetos


Vamos a seleccionar y ordenar los datos de una tabla empleados en base a la columna apellido.

<?php
$servidor = "localhost";
$usuario = "root";
$contraseña = "";
$base_datos = "empresa";

// Crear conexión
$conexion = new mysqli($servidor, $usuario, $contraseña, $base_datos);

// Verificar conexión
if ($conexion->connect_error) {
die("Conexión fallida: " . $conexion->connect_error);
}

// Consulta SQL
$sql = "SELECT id, nombre, apellido FROM empleados ORDER BY apellido DESC";
$resultado = $conexion->query($sql);

if ($resultado->num_rows > 0) {
// Salida de cada fila
while ($fila = $resultado->fetch_assoc()) {
echo "ID: " . $fila["id"] . " - Nombre: " . $fila["nombre"] . " " . $fila["apellido"] . "<br>";
}
} else {
echo "0 resultados";
}

$conexion->close();
?>


Explicación del código


Conexión a la base de datos: Se realiza mediante new mysqli.
Consulta SQL: La consulta selecciona los campos id, nombre y apellido de la tabla empleados, ordenando los resultados por apellido en orden descendente (DESC).
fetch_assoc(): Se utiliza para obtener los resultados como un arreglo asociativo que luego es procesado en un bucle.

Uso de ORDER BY con MySQLi Procedural


El siguiente ejemplo muestra cómo hacer lo mismo utilizando la extensión MySQLi en su enfoque procedural.

<?php
$servidor = "localhost";
$usuario = "root";
$contraseña = "";
$base_datos = "empresa";

// Crear conexión
$conexion = mysqli_connect($servidor, $usuario, $contraseña, $base_datos);

// Verificar conexión
if (!$conexion) {
die("Conexión fallida: " . mysqli_connect_error());
}

// Consulta SQL
$sql = "SELECT id, nombre, apellido FROM empleados ORDER BY apellido ASC";
$resultado = mysqli_query($conexion, $sql);

if (mysqli_num_rows($resultado) > 0) {
// Salida de cada fila
while ($fila = mysqli_fetch_assoc($resultado)) {
echo "ID: " . $fila["id"] . " - Nombre: " . $fila["nombre"] . " " . $fila["apellido"] . "<br>";
}
} else {
echo "0 resultados";
}

mysqli_close($conexion);
?>


Explicación del código


Similar al ejemplo orientado a objetos, pero utiliza funciones procedurales como mysqli_connect() y mysqli_query().
En este caso, los datos se ordenan en orden ascendente (ASC).

Ordenar Datos y Mostrarlos en una Tabla HTML


Podemos mejorar la presentación de los resultados colocando los datos en una tabla HTML.
<?php
$servidor = "localhost";
$usuario = "root";
$contraseña = "";
$base_datos = "empresa";

// Crear conexión
$conexion = new mysqli($servidor, $usuario, $contraseña, $base_datos);

// Verificar conexión
if ($conexion->connect_error) {
die("Conexión fallida: " . $conexion->connect_error);
}

// Consulta SQL
$sql = "SELECT id, nombre, apellido FROM empleados ORDER BY apellido";
$resultado = $conexion->query($sql);

if ($resultado->num_rows > 0) {
echo "<table border='1'><tr><th>ID</th><th>Nombre</th></tr>";
// Salida de cada fila
while ($fila = $resultado->fetch_assoc()) {
echo "<tr><td>" . $fila["id"] . "</td><td>" . $fila["nombre"] . " " . $fila["apellido"] . "</td></tr>";
}
echo "</table>";
} else {
echo "0 resultados";
}

$conexion->close();
?>


Explicación del código


Generar tabla HTML: Los datos obtenidos se muestran en una tabla HTML con bordes, lo que hace que la presentación sea más clara.

Uso de ORDER BY con PDO y Sentencias Preparadas


Ahora veremos cómo ordenar los datos utilizando PDO, que ofrece un enfoque más seguro al permitir el uso de sentencias preparadas.

<?php
echo "<table border='1'><tr><th>ID</th><th>Nombre</th><th>Apellido</th></tr>";

$servidor = "localhost";
$usuario = "root";
$contraseña = "";
$base_datos = "empresaPDO";

try {
$conexion = new PDO("mysql:host=$servidor;dbname=$base_datos", $usuario, $contraseña);
$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Sentencia preparada
$stmt = $conexion->prepare("SELECT id, nombre, apellido FROM empleados ORDER BY apellido");
$stmt->execute();

// Establecer el modo de obtención de resultados en asociativo
$resultado = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach ($stmt->fetchAll() as $fila) {
echo "<tr><td>" . $fila["id"] . "</td><td>" . $fila["nombre"] . "</td><td>" . $fila["apellido"] . "</td></tr>";
}
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conexion = null;

echo "</table>";
?>


Explicación del código


Sentencias preparadas: Utilizamos prepare() para preparar una consulta SQL segura. Esto es especialmente útil para prevenir inyecciones SQL.
Transparencia en la salida: Los datos se muestran dentro de una tabla HTML.

Conclusión


La cláusula ORDER BY es una herramienta poderosa que te permite controlar cómo se ordenan los resultados de una consulta SQL. PHP, a través de MySQLi y PDO, facilita la interacción con bases de datos MySQL, proporcionando diferentes métodos para ordenar y presentar los datos de manera eficiente.
+34 012 345 678
+34 012 345 678 (fax)
example@superhispano.com
Creado con WebSite X5
Regreso al contenido
Icono de la aplicación
SuperHispano Instale esta aplicación en su pantalla de inicio para una mejor experiencia
Toque Botón de instalación en iOS y luego "Agregar a su pantalla"