我創建了自己的數據庫類來簡化MySQLi預準備語句,並試圖在另一個類中訪問它。從另一個類訪問數據庫類
我已經數據庫類延伸到我的個人資料類,並試圖在我的構建中運行SELECT查詢並返回此錯誤:
Fatal error: Call to a member function prepare() on null in /home/matt500b/dev2.csgoberry.com/includes/database.class.php on line 80
配置文件類結構:
public function __construct($username) {
$params = parent::SELECT("SELECT users_info.*, users.username, users.lastOnline FROM users_info INNER JOIN users ON users.id = users_info.user_id WHERE users.username = ?", array('s', $username));
$this->fname = (isset($params[0]['fname']) ? $params[0]['fname'] : null);
/*More settings done here*/
}
但是,如果我首先運行查詢,然後將數據發送到構造如下:
$profileData = $db->SELECT('SELECT users_info.*, users.username, users.lastOnline FROM users_info INNER JOIN users ON users.id = users_info.user_id WHERE users.username = ?', array('s', $pid));
$pclass = new user_profile($profileData);
與構造是:
public function __construct($params){
$this->fname = (isset($params[0]['fname']) ? $params[0]['fname'] : null);
}
一切工作很好。
public function __construct($db_host, $db_user, $db_pass, $db_name, $debug){
$this->link = mysqli_connect($db_host, $db_user, $db_pass);
mysqli_select_db($this->link, $db_name);
$this->debug = $debug;
}
錯誤涉及到這一行:if ($stmt = $this->link->prepare($sql)) {
並建議$ SQL是空但是這兩個查詢是完全相同,除了他們的起源是相同的(當然,數據庫實例使用$db = new database(HOST, USER, PASSWORD, DATABASE, DEBUG);
在我的數據庫結構是所謂的parent::SELECT
vs $db->SELECT
)。
任何建議,使其工作?
非常感謝
'$這個 - > link'爲空不'$ sql'。我不會在問題的代碼示例中看到這行代碼。你的問題非常難以理解,因爲不清楚整個調用堆棧是什麼樣的。 –
$ this-> link是在數據庫結構中定義的。 – Matt