Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2010, 12:16
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 9 meses
Puntos: 20
Intentando entender PDO (varias dudas)

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
  1. <?php
  2. $servidor='localhost';
  3. $bd='hmgroupcat';
  4. $user='root';
  5. $pass='xxxxx';
  6.  
  7. // Conexion a la base de datos, defino que muestre los errores
  8. try {
  9.     $db = new PDO('mysql:dbname='.$bd.';host='.$servidor.'', $user, $pass);
  10.     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  11. } catch (PDOException $e) {
  12.     echo $e->getMessage();
  13. }
  14. //Variables de la consulta
  15. $valor1=1;
  16. $valor2='2009-10-06 19:03:49';
  17.  
  18. //Preparamos la consulta marcando donde irán los parametros con ?
  19. $consulta = $db->prepare('SELECT ID,post_date,post_content FROM wp_posts where ID= ? OR post_date = ?');
  20. try {
  21.  
  22.     //Ejecutamos la consulta incluyendo los parámetros en el mismo orden en el que deben incluirse
  23.     $consulta->execute(array($valor1, $valor2));
  24.    
  25. } catch (PDOException $e) {
  26.     echo $e->getMessage();
  27. }
  28.  
  29. // Imprimo los resultados
  30. while( $datos = $consulta->fetch() ) {
  31.     echo $datos[0] . '  ' . $datos[1] . '  ' . $datos[2]. '<br />';
  32. }
  33. // Cerramos la conexion
  34. $consulta = null;
  35. $db = null;
  36. ?>


Varias preguntas:
  1. 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
  2. ¿Es mejor poner varios try y catch a lo largo del script en lugar de uno solo que englobe toda la ejecución?
  3. ¿Es necesario cerrar la conexión con las dos lineas o con la última ya basta?
    $consulta = null;
    $db = null;
  4. ¿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
    1. $array = array();
    2. while ($row = $consulta->fetch()){
    3.     $array[] = $row;
    4. }

  5. ¿Cómo puedo crear mis propios métodos utilizando la clase PDO? porque al estar integrada en el sistema no se ve no?
  6. ¿Si creo algo nuevo podría estar machacando la clase original PDO?

Muchas gracias de antemano!