如果我不使用名称空间,Pdo就可以工作
这是你解决问题的关键。
PDO
是PHP中的一个类。所有类名都应该是完全限定的,否则PHP将只在当前命名空间中查找该类的定义。要在全局名称空间以外的任何其他名称空间中使用PDO,您需要在单个名称空间的帮助下指定全局名称空间
\
$this->pdo = new \PDO('mysql:host=127.0.0.1;dbname=db', 'user', 'password');
旁注。创建PDO实例的方法不是推荐的方法。您应该指定字符集并启用PDO错误报告。
$this->pdo = new \PDO('mysql:host=127.0.0.1;dbname=db;charset=utf8mb4', 'user', 'password', [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_EMULATE_PREPARES => false,
]);
从不捕捉异常,只为了
die/exit
. 要么让异常冒出来,要么妥善处理它们。手动向用户显示错误消息是一个潜在的安全问题。