Note that there are some explanatory texts on larger screens.

plurals
  1. POFatal error non object error
    text
    copied!<p>I am learning OOP and PDO. Iam very dumb and so got stuck with this error. What do you guys think?.</p> <pre><code>Fatal error: Call to a member function prepare() on a non-object in /var/www/op/DatosLibros.php on line 35 </code></pre> <p>DatosLibros.php</p> <pre><code>&lt;?php class DatosLibros { private $cadenaConexion; private $user; private $password; private $objetoConexion; public function __construct($cadenaConexion,$user,$password) { $this-&gt;cadenaConexion=$cadenaConexion; $this-&gt;user=$user; $this-&gt;password=$password; } public function conectar () { try { $this-&gt;objetoConexion= new PDO ($this-&gt;cadenaConexion,$this-&gt;user,$this-&gt;password); $this-&gt;objetoConexion-&gt;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-&gt;objetoConexion=null; } public function ejecutar ($strComando) { try { $ejecutar = $this-&gt;objetoConexion-&gt;prepare($strComando); $ejecutar-&gt;execute(); $rows= $ejecutar-&gt;fetchAll(); } catch (PDOException $ex) { throw $ex; } } } ?&gt; </code></pre> <p>Error line:</p> <pre><code>$ejecutar = $this-&gt;objetoConexion-&gt;prepare($strComando); </code></pre> <p>This one uses DatosLibros.php and is called NegociosLibros.php. I just added this part to you people see it the way it is. Here it is: </p> <pre><code> &lt;?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-&gt;codigo_libro=$codigo_libro; $this-&gt;nombre_libro=$nombre_libro; $this-&gt;descripcion_libro=$descripcion_libro; $this-&gt;autor_libro=$autor_libro; $this-&gt;categoria_libro=$categoria_libro; $this-&gt;editorial_libro=$editorial_libro; $this-&gt;cantidad_libro=$cantidad_libro; $this-&gt;objetoDatos=new DatosLibros ('mysql:host=localhost;dbname=b','root',''); } public function insertar() { try { $this-&gt;objetoDatos-&gt;conectar(); $this-&gt;objetoDatos-&gt;ejecutar("insert into libros(codigo_libro,nombre_libro,descripcion_libro,categoria_libro,editorial_libro,cantidad_libro) values('$this-&gt;codigo_libro','$this-&gt;nombre_libro','$this-&gt;descripcion_libro','$this-&gt;autor_libro','$this-&gt;categoria_libro','$this-&gt;editorial_libro','$this-&gt;cantidad_libro')"); $this-&gt;objetoDatos-&gt;desconectar(); } catch (PDOException $ex) { throw $ex; } } public function eliminar() { $this-&gt;objetoDatos-&gt;conectar(); $this-&gt;objetoDatos-&gt;ejecutar("delete from libros where codigo_libro=$this-&gt;codigo_libro"); $this-&gt;objetoDatos-&gt;desconectar(); } public function modificar() { $this-&gt;objetoDatos-&gt;conectar(); $this-&gt;objetoDatos-&gt;ejecutar("update libros set cantidad_libro='$this-&gt;cantidad_libro' where codigo_libro=$this-&gt;codigo_libro)"); $this-&gt;objetoDatos-&gt;desconectar(); } public function mostrar() { $this-&gt;objetoDatos-&gt;conectar(); $fila-&gt;$this-&gt;objetoDatos-&gt;ejecutar("select * from libros where codigo=$this-&gt;codigo"); foreach($fila as $filaActual){ echo "Codigo del Libro: ",$filaActual [codigo_libro],"&lt;br/&gt;Nombre del Libro:",$filaActual [nombre_libro],"&lt;br/&gt;Descripcion:",$filaActual [descripcion_libro],"&lt;br/&gt;Autor:",$filaActual [autor_libro],"&lt;br/&gt;Categoria:",$filaActual [categoria_libro],"&lt;br/&gt;Editorial:",$filaActual [editorial_libro],"&lt;br/&gt;Cantidad de libros:",$filaActual [cantidad_libro]; echo "&lt;/br&gt;"; } $this-&gt;objetoDatos-&gt;desconectar(); } } ?&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload