Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/11/2011, 09:08
Sirrohan
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 14 años, 4 meses
Puntos: 21
Error en fetch object con PDO

Hoy como no tenía muchas cosas que hacer y mucho que aprender quise experimentar a abrir conexiones con PDO usando MySQL. Descomentando en el archivo php.ini la linea extension=php_pdo_mysql.dll y encontrando este tutorial en google

Me hice un formulario sencillo, solamente con dos campos, un campo ID autoincremental y un campo nombre, solo como prueba, después de realizar una primera prueba exitosa al insertar un campo a la base de datos, quise listar los registros dentro de la misma con este código

Código PHP:
Ver original
  1. <?php
  2. /*** mysql servidor ***/
  3. $hostname = 'localhost';
  4.  
  5. /*** mysql usuario ***/
  6. $username = 'root';
  7.  
  8. /*** mysql contraseña ***/
  9. $password = '';
  10.  
  11. /*** mysql base de datos ***/
  12. $dbname='prueba';
  13.  
  14. /*** ***/
  15. $nombre=$_POST['nombre'];
  16. //echo $nombre;
  17. try
  18. {
  19.     /*** Se crea el objeto PDO***/
  20.     $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
  21.     /*** imprime un mensaje diciendo que se ha conectado ***/
  22.     echo 'Conectado a la Base de datos';
  23.     /*** sentencia SQL ***/
  24.     $sql="insert into prueba (id,nombre) value ('','$nombre')";
  25.     /*** busca en una declaración al objeto PDO  ***/
  26.     $count=$dbh->exec($sql);
  27.     /*** numero de columnas ***/
  28.     echo $count;
  29.     /*** sentencia SQL ***/
  30.     $esecuele="select * from prueba";
  31.     /*** busca en una declaración al objeto PDO  ***/
  32.     $sentencia=$dbh->exec($esecuele);
  33.     /*** asigna el atributo para reportar errores ***/
  34.     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  35.     /*** numero de columnas ***/
  36.         $objeto = $sentencia->fetch(PDO::FETCH_OBJECT);
  37.     /*** ciclo que recorreo el objeto  ***/
  38.     echo $objeto->id.'<br />';
  39.     echo $objeto->nombre.'<br />';
  40.  
  41.     /**** Se desconecta la conexion a la base de datos ****/
  42.     $dbh=null;
  43. }
  44. catch(PDOException $e)
  45. {
  46.     echo $e->getMessage();
  47. }

Obteniendo este grandioso mensaje
Código Error:
Ver original
  1. Fatal error: Call to a member function fetch() on a non-object in \xampp\htdocs\ejemplo\ejemplo_pdo\analizar_formulario_ejemplo.php on line 33

Si, el mensaje dice "Llamada a miembro de la funcion fetch() en un no-objeto" y bla bla bla....

Pero si la funcion fetch no debería tener ningún error, por que aparece ese grandioso error?

Última edición por Sirrohan; 01/11/2011 a las 09:21