Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

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

Estas en el tema de Fatal error: Call to a member function prepare() on a non-object en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a tod@s tengo el siguiente error - la classe que tengo es la siguiente: Código PHP: class  sql  {          public static  $db  =  false ...
  #1 (permalink)  
Antiguo 18/01/2013, 03:43
 
Fecha de Ingreso: septiembre-2010
Ubicación: /home/
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 17
Fatal error: Call to a member function prepare() on a non-object

Hola a tod@s

tengo el siguiente error - la classe que tengo es la siguiente:
Código PHP:
class sql {
    
    public static 
$db false;
    private 
$database_type 'mysql';
    private 
$database_host 'host';
    private 
$database_user 'user';
    private 
$database_pass 'user';
    private 
$database_db 'bd';

    function 
__construct()
    {
        if (
self::$db === false) {
            
$this->connect();
        }
    }

    private function 
connect()
    {
        
$dsn $this->database_type.":host=" $this->database_host.";dbname=" .$this->database_db;     
        
        try {
            
            
self::$db = new PDO($dsn$this->database_user$this->database_pass);
            
self::$db->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
            global 
$db;
            
        } catch (
PDOException $e) { 
            
            echo 
$e->getMessage();
            
        }
    }

y al llarmarla me da el error: Fatal error: Call to a member function prepare() on a non-object
Código PHP:
include_once("lib/conexion.php");
$q sql::$db->prepare("SELECT * FROM usuarios WHERE usuario = ?");
$q->execute( array( "nombre_usuario" ) ); 
while( 
$r $q->fetch) ){
    echo 
$r['id'];

Saludos y gracias
  #2 (permalink)  
Antiguo 18/01/2013, 05:37
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Fatal error: Call to a member function prepare() on a non-object

Eso es porque sql:$db no es un objeto (te lo dice el error), con lo cual no estás instanciando tu atributo de clase, es decir, no estás llamando al constructor que es quien lo instancia.

Recuerda que las llamadas estáticas hacen referencia a la clase, no al objeto. Con lo cual deberías buscar otro enfoque / diseño para tu clase.

Saludos.

Etiquetas: poo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:01.