Fatal error: Call to a member function prepare() on a non-object in

Publicado en 'Programación' por Decadente, 29 Oct 2013.





  1. Decadente

    Decadente Miembro nuevo

    Registro:
    29 Oct 2013
    Mensajes:
    2
    Likes:
    0




    Soy nuevo en POO y PDO , estoy haciendo un sistema sencillo bibliotecario y ando algo desesperado. Tengo este error:

    Fatal error: Call to a member function prepare() on a non-object in /var/www/op/DatosLibros.php on line 35

    DatosLibros.php

    PHP:
    <?php
    class DatosLibros
     

      private 
    $cadenaConexion;
      private 
    $user;
      private 
    $password;
      private 
    $objetoConexion;
      
    public function 
    __construct($cadenaConexion,$user,$password)
         {
         
    $this->cadenaConexion=$cadenaConexion;
         
    $this->user=$user;
         
    $this->password=$password;
         }
    public function 
    conectar ()
      {
       try
        {
         
    $this->objetoConexion= new PDO ($this->cadenaConexion,$this->user,$this->password);
         
    $this->objetoConexion->setAttribute(PDO::ATTR_EARMODE,PDO::EARMODE_EXCEPTION);
         }
       catch (
    PDOException $ex)
        {
         echo 
    "Se ha presentado un problema a la hora de conectar con la base de datos";
         }
       }
    public function 
    desconectar ()
        {
        
    $this->objetoConexion=null;
        }
    public function 
    ejecutar ($strComando)
     {
      try
        {
         
    $ejecutar $this->objetoConexion->prepare($strComando);
         
    $ejecutar->execute();
         
    $rows$ejecutar->fetchAll();
         }
      catch (
    PDOException $ex)
        {  
         throw 
    $ex;
         }
       }
      } 
    ?>
    Esta es la linea del error

    PHP:
    $ejecutar $this->objetoConexion->prepare($strComando);
    Este archivo hereda de DatosLibros.php y se llama NegociosLibros.php

    PHP:
    <?php
    include_once ("DatosLibros.php");

    class 
    capaNegocios
    {
     public 
    $codigo_libro;
     public 
    $nombre_libro;
     public 
    $descripcion_libro;
     public 
    $autor_libro;
     public 
    $categoria_libro;
     public 
    $editorial_libro;
     public 
    $cantidad_libro;
     public 
    $objetoDatos;
     
    public function 
    __construct($codigo_libro,$nombre_libro,$descripcion_libro,$autor_libro,$categoria_libro,$editorial_libro,$cantidad_libro)
     {
       
    $this->codigo_libro=$codigo_libro;
       
    $this->nombre_libro=$nombre_libro;
       
    $this->descripcion_libro=$descripcion_libro;
       
    $this->autor_libro=$autor_libro;
       
    $this->categoria_libro=$categoria_libro;
       
    $this->editorial_libro=$editorial_libro;
       
    $this->cantidad_libro=$cantidad_libro;
       
    $this->objetoDatos=new DatosLibros ('mysql:host=localhost;dbname=b','root','');
       }

    public function 
    insertar()
     {
      try
        {
          
    $this->objetoDatos->conectar();
          
    $this->objetoDatos->ejecutar("insert into libros(codigo_libro,nombre_libro,descripcion_libro,categoria_libro,editorial_libro,cantidad_libro) values('$this->codigo_libro','$this->nombre_libro','$this->descripcion_libro','$this->autor_libro','$this->categoria_libro','$this->editorial_libro','$this->cantidad_libro')");
          
    $this->objetoDatos->desconectar();
         }
      catch (
    PDOException $ex)
         {
           throw 
    $ex;
         }
       }  
    public function 
    eliminar()
       
         {
          
    $this->objetoDatos->conectar();
          
    $this->objetoDatos->ejecutar("delete from libros where codigo_libro=$this->codigo_libro");
          
    $this->objetoDatos->desconectar();
         }

    public function 
    modificar()
         {
          
    $this->objetoDatos->conectar();
          
    $this->objetoDatos->ejecutar("update libros set cantidad_libro='$this->cantidad_libro' where codigo_libro=$this->codigo_libro)");
          
    $this->objetoDatos->desconectar();
         }

    public function 
    mostrar()
         {
          
    $this->objetoDatos->conectar();
          
    $fila->$this->objetoDatos->ejecutar("select * from libros where codigo=$this->codigo");
           foreach(
    $fila as $filaActual){
           echo 
    "Codigo del Libro: ",$filaActual [codigo_libro],"<br/>Nombre del Libro:",$filaActual [nombre_libro],"<br/>Descripcion:",$filaActual [descripcion_libro],"<br/>Autor:",$filaActual [autor_libro],"<br/>Categoria:",$filaActual [categoria_libro],"<br/>Editorial:",$filaActual [editorial_libro],"<br/>Cantidad de libros:",$filaActual [cantidad_libro];
           echo 
    "</br>";
            }
          
    $this->objetoDatos->desconectar();
         }

    }
    ?>
     


  2. genelyk

    genelyk Suspendido

    Registro:
    25 Feb 2011
    Mensajes:
    3,154
    Likes:
    1,053
    Lol , mejor pregunta a tu profe pa algo le pagas .. con php, ni que fuera tan complejooo........
     
  3. Decadente

    Decadente Miembro nuevo

    Registro:
    29 Oct 2013
    Mensajes:
    2
    Likes:
    0
    Precisamente es algo que le tengo que entregar en la universidad. Soy algo nuevo en esto y es algo urgente.
     
    Última edición: 29 Oct 2013