Vaya al Contenido

PHP Cláusula WHERE - 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

Cómo Usar Cláusula WHERE en PHP con MySQL


La cláusula WHERE es una de las herramientas más importantes al trabajar con bases de datos. Te permite filtrar registros y obtener solo los datos que cumplen con una condición específica. En este artículo, aprenderás a usar la cláusula WHERE con MySQL y PHP usando MySQLi y PDO.

¿Qué es la cláusula WHERE?


La cláusula WHERE se utiliza en SQL para filtrar los resultados de una consulta. Solo se devuelven los registros que cumplen con la condición especificada.

Sintaxis básica de WHERE


SELECT columna(s) FROM tabla WHERE columna operador valor;

Por ejemplo, si queremos obtener todos los registros de una tabla de empleados donde el apellido sea “García”, la consulta sería:

SELECT * FROM empleados WHERE apellido = 'García';

Filtrando datos con MySQLi Orientado a Objetos


En este ejemplo, vamos a filtrar los registros de la tabla empleados donde el nombre es “Carlos” utilizando MySQLi en su enfoque orientado a objetos.

Ejemplo de MySQLi Orientado a Objetos


<?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 con cláusula WHERE
$sql = "SELECT id, nombre, apellido FROM empleados WHERE nombre='Carlos'";
$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


$conexion->query($sql): Ejecuta la consulta SQL.
$resultado->num_rows > 0: Verifica si hay resultados.
$fila = $resultado->fetch_assoc(): Recupera cada fila como un array asociativo.

Filtrando datos con MySQLi Procedural


Si prefieres trabajar con el enfoque procedural, el siguiente ejemplo realiza la misma operación con funciones procedurales de MySQLi.

Ejemplo de MySQLi 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 con cláusula WHERE
$sql = "SELECT id, nombre, apellido FROM empleados WHERE nombre='Ana'";
$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


mysqli_query(): Ejecuta la consulta SQL.
mysqli_num_rows(): Verifica si se encontraron registros.
mysqli_fetch_assoc(): Recorre los resultados.

Mostrando resultados en una tabla HTML con MySQLi Orientado a Objetos


En algunos casos, es útil mostrar los datos en una tabla HTML. Aquí te mostramos cómo hacerlo.

Ejemplo de MySQLi con 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);
}

$sql = "SELECT id, nombre, apellido FROM empleados WHERE apellido='Pérez'";
$resultado = $conexion->query($sql);

if ($resultado->num_rows > 0) {
echo "<table><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


Los datos obtenidos de la base de datos se formatean y se presentan en una tabla HTML con las etiquetas <table>, <tr>, y <td>.

Filtrando datos con PDO y Sentencias Preparadas


El uso de PDO y sentencias preparadas es una buena práctica, ya que mejora la seguridad al prevenir inyecciones SQL. Aquí mostramos cómo hacerlo.

Ejemplo de PDO con Sentencias Preparadas


<?php
echo "<table style='border: solid 1px black;'><tr><th>ID</th><th>Nombre</th><th>Apellido</th></tr>";

class TableRows extends RecursiveIteratorIterator {
function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}

function current() {
return "<td style='width:150px;border:1px solid black;'>" . parent::current() . "</td>";
}

function beginChildren() {
echo "<tr>";
}

function endChildren() {
echo "</tr>" . "\n";
}
}

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

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

// Consulta preparada con WHERE
$stmt = $conexion->prepare("SELECT id, nombre, apellido FROM empleados WHERE apellido = :apellido");
$stmt->execute(['apellido' => 'Gómez']);

// Mostrar resultados
$resultado = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}

$conexion = null;
echo "</table>";
?>


Explicación del código


Sentencias preparadas: Utilizamos prepare() para preparar la consulta SQL. Luego, execute() asocia los valores a los marcadores de posición.
TableRows: Se usa una clase personalizada para recorrer los resultados y generar una tabla HTML.

Conclusión


La cláusula WHERE es fundamental para filtrar datos en las consultas SQL. Usar PHP con MySQL permite implementar consultas filtradas de manera eficiente, ya sea utilizando MySQLi en modo orientado a objetos, procedural o PDO con sentencias preparadas. Las sentencias preparadas mejoran la seguridad de tus aplicaciones, previniendo inyecciones SQL.
+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"