php mysqli clase

Mi problema básico es que tengo problemas para acceder a una clase desde otra clase. Esto es lo que he configurado hasta ahora:

Mi clase de base de datos:

class db {

    public static $mysqli;
    public function __construct(){}

    static function con(){
        if(!self::$mysqli){
            self::$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
        }
        return self::$mysqli;
    }
}

Esto funciona muy bien cuando lo llamo desde una función como esta:

function defineSettings(){
  if ($query = db::con()->prepare(...my query...)) {    
    $query->execute();
    $query->bind_result($1, $2, $3);
    $query->fetch();
    $query->close();
  }

  db::con()->close();

}

Sin embargo, tengo problemas para acceder a este método db-> con () desde el método de otra clase. Intenté extenderlo a una nueva clase, pero tal vez lo esté haciendo mal. ¡Un ejemplo de cómo usar esto de una nueva clase sería muy apreciado! ¡Gracias!

preguntado el 16 de mayo de 11 a las 18:05

asegúrate de definir db::con() as public static function y public class db -

Una vez que hago eso, ¿cómo puedo llamar a esto desde un método desde otra clase? -

siempre que los códigos estén en el mismo archivo (o el archivo con class db está incluido en el otro archivo) entonces debería funcionar. -

error de sintaxis, T_PUBLIC inesperado al indicar la clase pública db -

ahh, pues quita el public desde public class db -

1 Respuestas

No estoy 100% seguro de haber entendido su pregunta, pero la clase a continuación debería mostrar cómo puede obtener el objeto db del Db class, y luego usarlo en otra función

class Example2 {
    private $db;

    public function test() {
        if (!$this->db) {
            $this->db = db::con();
        }
        //Do your stuff
    }

    public function test2() {
        $this->db->close();
    }
}

contestado el 16 de mayo de 11 a las 22:05

Acabo de recibir un error: mysqli :: close () [mysqli.close]: No se pudo recuperar mysqli en ... - Danielle Shay

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.