2016-04-16 2 views
-2
<?php class DB{ 

public static $conn; 

public function __construct(){ 
    try { 
     $this->conn = new \PDO('mysql:host=' . Route::get('mysql/host') . '; dbname='. Route::get('mysql/db'), Route::get('mysql/username'), Route::get('mysql/password')); 
     $this->conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); 
     return $this->conn; 

    } catch (PDOException $e) { 
     die('Sorry cannot connect!'); 
    } 
} 

public function __destruct(){ 
    $this->conn->close(); 
    unset($this->conn); 
} 

public static function db_query($query, $bindings){ 
    $stmt = $this->conn->prepare($query); 
    $stmt->execute($bindings); 
    $res = $stmt->fetchAll(); 
    return $res ? $res : false; 
} 

}

?> Problem ist, wie kann ich die Verbindung zu einer anderen Funktion übergeben Fehler zu vermeiden, wie oben. bitte helfen?

Antwort

0

Sie können $this nicht in statischer Funktion verwenden. Dies ist ein Zitat aus PHP manual:

Die Pseudovariable $ Dies ist verfügbar, wenn eine Methode aus einem Objektkontext aufgerufen wird. $ Dies ist eine Referenz auf das aufrufende Objekt (normalerweise das Objekt, zu dem die Methode gehört, möglicherweise aber ein anderes Objekt, wenn die Methode statisch aus dem Kontext eines sekundären Objekts aufgerufen wird).

Sie können db_query() auf nicht-statische und es wie $db->db_query() statt DB::db_query()

+0

Danke, Andrew nennen ändern! Es funktioniert jetzt gut. :) –

Verwandte Themen