Hola, tercera parte del tutorial sobre PDO en PHP; como pone en el título, en esta parte os voy a enseñar cómo hacer consultas y así saber todo lo que uno ha de saber acerca de esta manera tan eficiente de manejar bases de datos en PHP. Primero veamos cómo se hace en MySQL y PHP normal, el de toda la vida:
<?php $conexion = mysql_connect('localhost', 'usuario', 'contraseña') or die('Could not connect: ' . mysql_error()); mysql_select_db('bd', $conexion); $sql = mysql_query("SELECT * from usuarios"); while($columna = mysql_fetch_array($sql)){ echo $columna["Nombre"]; } ?>
Todo esto dejando de lado aspectos de seguridad, ya que esto podría ser “hackeable”. En PDO se hace de una manera completamente distinta pero a la vez mucho más segura, haciendo uso de los “prepared statements”, con el fin de que nuestra web sea más difícil de acceder. Se hace de la siguiente manera (aprovechando el código de la parte 1):
<?php $nombre = "Juan"; try{ $conn = new PDO('mysql:host=localhost;dbname=basededatos', $usuario, $contra); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = $conn->prepare('SELECT * FROM usuarios WHERE nombre = :Nombre'); $sql->execute(array('Nombre' => $nombre)); $resultado = $sql->fetchAll(); foreach ($resultado as $row) { echo $row["Id"]; } }catch(PDOException $e){ echo "ERROR: " . $e->getMessage(); } ?>
Se ve perfectamente que es distinto, que se hace de otra manera, pero realmente no es tan complicado, he aprovechado la tabla que cree en la primera parte del tutorial.
Pasamos a explicar un poco el código en detalle: primero hemos usado el método “prepare”, de la función conn, definida antes, y le hemos pasado la consulta como parámetro, cualquier consulta SQL, no hace falta que sea tan sencilla como esta, pero donde iría la variable “Nombre”, definida antes, he puesto “:Nombre”, y le he pasado eso como parámetro en un array dentro del execute en la línea siguiente (la línea 8). Más tarde he hecho un fetch para que me devuelva los datos de la consulta y para acabar, un foreach que imprime el resultado.
Cabe destacar el uso del fetch, ya que esta no es la única manera de usarlo en PDO. Si no se le pasa nada como parámetro, éste devolverá un array, pero también podemos definirlo para que devuelva un objeto, una instancia de clase, etc. Para esto solo tendremos que ponerle como parámetro lo siguiente:
- PDO::FETCH_ASSOC: Es el que viene por defecto, que devuelve un array. Es el que se usa en este ejemplo.
- PDO::FETCH_BOTH: que devuelve un array de otra manera (no voy a entrar muy en detalle, que el tutorial es para aprender lo básico).
- PDO::FETCH_BOUND
- PDO::FETCH_CLASS
- PDO::FETCH_OBJ
Para más detalles acerca del fetch, no dudes consultar la documentación de PHP.
Finalmente, resta decir que para hacer otro tipo de consultas (INSERT, DELETE o UPDATE), se hace de la misma manera.
Llegamos hasta el final de esta tercera parte del tutorial de PDO en PHP, en la última parte (la siguiente), haré un vídeotutorial y lo subiré a youtube con todo lo que hemos aprendido en esta serie.
Espero que os haya gustado y si es así, ¡no olvidéis comentar!
Saludos.
Una pregunta. Si hago un formulario,para llenar una tabla y este a su vez necesita una información de otra que tengo en la base de datos; ¿como puedo hacer para llamar los datos, seleccionarlos, mostrarlos con un select y luego cargar los datos de la tabla destino?
Hola amigo muy interesante lo de Pdo pero se puede hacer consultas ajax también?
Me refiero por ejemplo como Google Q cuando digiramos una letra en un input y se
Se desplega las sugerencias ?
Me podrías explicar cómo hacerlo por favor ?
En la web hay vídeos q lo hacen utilizando librería JQuery pero se puede hacer solo con Ajax y conexión Pdo?
Te agradezco muchísimos por tu gran aporte y ayuda
Saludos cordiales
Hola amigo muy interesante lo de Pdo pero se puede hacer consultas ajax también?
Me refiero por ejemplo como Google Q cuando digiramos una letra en un input y se
Se desplega las sugerencias ?
Me podrías explicar cómo hacerlo por favor ?
En la web hay vídeos q lo hacen utilizando JQuery pero se puede hacer solo con Ajax y conexión Pdo?
Te agradezco muchísimos por tu gran aporte y ayuda
Saludos cordiales
y para este con PDO, no se cierra la conexion a la base de datos?
Muchas gracias por el tutorial me sirvio mucho.
Muchas gracias por el tutorial de conexion con PHP – PDO. me sirvio mucho.
Veo que tienes dos ? en tu codigo eso supone que sean los valores que estas introduciendo?.
Te hago una consulta.
Luego de hacer una consulta a la base, anteriormente en php uno recuperaba datos de la siguiente manera:
$result[‘id’];
Como lo haria con PDO?
Se puede hacer sin un foreach o un while?
Slds!
hola estoy trabajando con pdo y he tenido problemas para hacer registros me sale este error
“Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\aja\SALVAVIDA\admin\model\core\datos_hospital.php on line 188″
esta es la linea
$result = $this->conexion->conex->prepare(“INSERT INTO hospital (nit_hospital, nombre_hospital)
value (?, ?)”);
quisiera saber si me puedes ayudar
Hola yo estoy siguiendo este hilo y creo yuli que si estas trabajando con pdo y ademas estas implementandolo dentro de una clase deberias replantearte como manejar eso si puedes enviar todo el codigo se te podria dar una ayuda mas certera.