我已经搜索了关于这个的每一个答案,没有人似乎完全回答了发生了什么。 当试图用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