Buenas,
Estoy tratando de entender PDO y tengo un "par de dudas" que no he sabido resolver hasta al momento.
He construido el siguiente script
Código PHP:
Ver original<?php
$servidor='localhost';
$bd='hmgroupcat';
$user='root';
$pass='xxxxx';
// Conexion a la base de datos, defino que muestre los errores
try {
$db = new PDO('mysql:dbname='.$bd.';host='.$servidor.'', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMessage();
}
//Variables de la consulta
$valor1=1;
$valor2='2009-10-06 19:03:49';
//Preparamos la consulta marcando donde irán los parametros con ?
$consulta = $db->prepare('SELECT ID,post_date,post_content FROM wp_posts where ID= ? OR post_date = ?');
try {
//Ejecutamos la consulta incluyendo los parámetros en el mismo orden en el que deben incluirse
$consulta->execute(array($valor1, $valor2));
} catch (PDOException $e) {
echo $e->getMessage();
}
// Imprimo los resultados
while( $datos = $consulta->fetch() ) {
echo $datos[0] . ' ' . $datos[1] . ' ' . $datos[2]. '<br />';
}
// Cerramos la conexion
$consulta = null;
$db = null;
?>
Varias preguntas: - Linea 10, para que se utiliza?
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
He visto que hay muchos pero no he visto su explicacion/utilización (los dos que he puesto imagino que encuentra las excepciones, pero hay que poner alguno más? hay otro útil?
Aquí hay una lista pero no encuentro explicación...
http://www.php.net/manual/es/pdo.getattribute.php
- ¿Es mejor poner varios try y catch a lo largo del script en lugar de uno solo que englobe toda la ejecución?
- ¿Es necesario cerrar la conexión con las dos lineas o con la última ya basta?
$consulta = null;
$db = null;
- ¿Hay algún método para guardar los valores de la consulta en un array y evitar de tener que hacer esto?
Código PHP:
Ver originalwhile ($row = $consulta->fetch()){
$array[] = $row;
}
- ¿Cómo puedo crear mis propios métodos utilizando la clase PDO? porque al estar integrada en el sistema no se ve no?
- ¿Si creo algo nuevo podría estar machacando la clase original PDO?
Muchas gracias de antemano!