Consultas base de datos con PDO
En este tutorial aprenderemos cómo crear consultas a bases de datos utilizando PDO y acceder a los valores devueltos.
Después de realizar la conexión con la base de datos, ver Conexión a base de datos MYSQL con PDO , si todo ha ido bien ya podemos realizar consultas.
Métodos
Utilizaremos dos métodos:
- $objetoPdo->exec($consulta)
Para realizar consultas sin resultado: Insert, update, delete, drop, truncate y create. Consultas que no devuelven ningún valor.
- $objetoPdo->query($consulta)
Para consultas que devuelven valores: Consultas Select
Consultas sin resultado
//Consulta de inserción
$consulta = "INSERT INTO usuarios (nombre,dni) VALUES('Juan','43434343L');
//Ejecutamos la consulta
$objetoPdo->exec($consulta);
A diferencia de cuando utilizamos MYSQLi, que teníamos que usar los métodos affected_rows para saber las filas afectadas, en PDO el mismo método exec devuelve este valor
//Consulta de Delete
$consulta = "DELETE FROM usuarios WHERE nombre = 'Juan'";
//Ejecutamos la consulta
$afectados = $objetoPdo->exec($consulta);
//En $afectados guarda el número de filas afectadas
echo "Se han borrado " . $afectados . " registros"
Consultas con resultado
Para realizar consultas que devuelven algo utilizamos el método query
//Preparamos la consulta
$consulta = "SELECT nombre, dni FROM usuarios";
//Ejecutamos la consulta y guardamos el resultado
$resultado = $objetoPdo->query($consulta);
//Ahora resultado es como una tabla virtual con el resultado de la consulta
Para acceder a los valores devueltos por la consulta select utilizamos el método fetch
$resultado->fetch()
El método fetch genera y devuelve un array con claves numéricas y asociativas.
Podemos pasarle parámetros para cambiar este comportamiento.
- PDO::FETCH_ASSOC (Devuelve un array asociativo)
- PDO::FETCH_NUM (Devuelve un array con claves numéricas)
- PDO::FETCH_BOTH (Comportamiento por defecto, igual que si no ponemos nada)
Veamos cómo recorrer los registros utilizando el método fetch por defecto
//El bucle While recorre una fila en cada vuelta y podemos acceder a los valores de cada fila
//El array asociativo $registro contiene los valores de la fila actual
while($registro = $resultado->fetch()) {
echo "NOMBRE: " . $registro['nombre'] . ", DNI: " . $registro['dni'] . "<br>";
}
Para gestionar los errores o excepciones puedes ver Gestión de errores y excepciones PDO
Si te ha gustado no olvides compartir en redes sociales.
[addthis tool=»addthis_inline_share_toolbox_6jt6″]Espero que te haya servido. Cualquier duda deja un comentario. Un saludo