<?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;
}
}
?>问题是如何将连接传递给另一个函数以避免上述错误。请帮忙?
不能在静态函数中使用$this
。这是引用自PHP手册:
伪变量$this在对象上下文中调用方法时可用。 $this是对调用对象的引用(通常是方法所属的对象,但如果从辅助对象的上下文静态调用该方法,则可能是另一个对象(。
您可以将db_query()
更改为非静态,并像$db->db_query()
而不是DB::db_query()
一样调用它