miércoles, 30 de julio de 2014

Ejecutar consultas SELECT con PDO Mysql


Bienvenid@s, hoy veremos como ejecutar consultas SELECT mediante la extensión PDO conectando al driver Mysql.

Para el ejemplo vamos a crear una base de datos de ejemplo llamada "pdo" y crearemos la siguiente tabla llamada "usuarios", simplemente una vez que hayas creado la base de datos "pdo" copia el código y ejecuta una consulta SQL en PHPMyadmin:


CREATE TABLE IF NOT EXISTS `usuarios` (
  `id_usuario` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(80) NOT NULL,
  `apellidos` varchar(80) NOT NULL,
  `email` varchar(80) NOT NULL,
  `password` varchar(100) NOT NULL,
  PRIMARY KEY (`id_usuario`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4;

--
-- Volcado de datos para la tabla `usuarios`
--

INSERT INTO `usuarios` (`id_usuario`, `nombre`, `apellidos`, `email`, `password`) VALUES
(1, 'usuario1', 'apellido apellido', 'usuario1@mail.com', '27c2316952343b414e81633e81f91634e19fd6ee'),
(2, 'usuario2', 'apellido apellido', 'usuario2@mail.com', '78dff851963cc401961288c9aa909ff8e862fd83'),
(3, 'usuario3', 'apellido apellido', 'usuario3@mail.com', '6d575a7e2632f50e7591ffdf5e5d75300f14b0ab');

Bien, ahora crearemos un archivo llamado select.php y le agregaremos el siguiente código para extraer todas las filas de la tabla "usuarios":

/* Establecer la conexión */
$conexion = new PDO("mysql:dbname=pdo;host=localhost", "root", "password");

/* Consulta SELECT para extraer todos los registros */
$sql = "SELECT * FROM usuarios";

/* Preparar la consulta */
$query = $conexion->prepare($sql);

/* Ejecutar la consulta */
$query->execute();

echo "<table cellpadding='5' border='1'>\n";
/* Recorrer una a una todas las filas */
while ($fila = $query->fetch())
{
echo "<tr>\n";
echo "<td>".$fila["nombre"]."</td><td>".$fila["apellidos"]."</td><td>".$fila["email"]."</td><td>".$fila["password"]."</td>\n";
echo "</tr>\n";
}
echo "</table>\n";




Bien, en este caso hemos seleccionado todos los registros, pero se puede dar el caso de que queramos seleccionar una fila en concreto, para ello cambiaremos ciertas cosas en el código, pero sobre todo observa como vinculamos el parámetro :parametro a la consulta, esto nos proporcionará seguridad contra la inyección SQL ...


/* Establecer la conexión */
$conexion = new PDO("mysql:dbname=pdo;host=localhost", "root", "password");

/* Consulta SELECT para extraer un registro. ¡ten en cuenta que estamos vinculando un parámetro! */
$sql = "SELECT * FROM usuarios WHERE id_usuario=:parametro";

/* Preparar la consulta */
$query = $conexion->prepare($sql);

/* Ahora vinculamos el parámetro con el valor */
$id_usuario = 1;
$query->bindParam(":parametro", $id_usuario);

/* Ejecutar la consulta */
$query->execute();

/*Si la fila existe: rowCount() regresa el número de filas afectadas*/
if ($query->rowCount() > 0)
{
/* Obtenemos la fila */
$fila = $query->fetch();
print $fila["nombre"] . ", " . $fila["apellidos"] . ", " . $fila["email"] . ", " . $fila["password"];
}


Ok, como podemos ver hemos extraido sólo la fila con id_usuario =  1. Trabajar con PDO ofrece muchas ventajas y como habéis podido ver en estos ejemplo no es nada complicado, pero si es esencial el hecho de comprender el modo de vincular parámetros en las consultas para dar más seguridad y orden a las consultas.


No hay comentarios: