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 } 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 original
- while ($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!