我已經搜索了關於這個的每一個答案,沒有人似乎完全回答了發生了什麼。 當試圖用pdo準備語句時,我在標題中出現錯誤。調用成員函數prepare()null - PDO
我曾嘗試:
使用構造函數,而不是
使用非靜態
使用$這個時候我有一個構造函數
捕獲PDO的例外,沒有人可以拋出
這裏是main.php
class db {
public static $db;
public static $db2;
public static function start() {
$host = "localhost";
$dbname = "dbname";
$usr = "user";
$ps = "pass";
$pdo = "mysql:host=$host;dbname=$dbname";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT => true
];
try {
db::$db = new PDO($pdo, $usr, $ps, $opt);
return db::$db;
} catch(PDOException $e) {
$e->getMessage();
}
}
}
然後初始化數據庫,我稱之爲啓動功能的index.php中與db::start();
現在,到了錯誤。
在main.php中,在一個完全不同的類和函數中,我試着靜態地調用這個連接。
$stmt0 = db::$db->prepare("SELECT * FROM users WHERE uname=:u");
但是完成後,我收到標題中的錯誤,在這一行。
大多數人可能會認爲,嗯,連接必須有錯誤,然後如果它將它調用爲null。如果是這樣的話,有些東西會阻止我的異常被拋出,因爲我在錯誤日誌或頁面上看不到任何東西。
你做,如果try塊失敗$沒有迴音錯誤E->的getMessage (); –
添加回聲,你會看到錯誤 –
回聲沒什麼,我也試過error_log。 – Joel