You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PDO创建PHP CRUD应用,配置文件出现Undefined type 'App\PDO'错误

「Undefined type 'App\PDO'」错误原因及解决方法

错误原因

  • 配置文件顶部声明了namespace App;,PHP会默认在当前App命名空间下查找所有类。但PDO是PHP核心扩展类,属于全局命名空间(无命名空间前缀),直接写PDO时,PHP会尝试查找App\PDO,找不到就抛出类型未定义错误。
  • 上级目录的index.php没有声明命名空间,PHP直接在全局命名空间查找PDO,因此能正常运行并显示文档提示。

解决方法

有两种可行方案:

方案1:给PDO类加上全局命名空间前缀

在所有引用PDO和PDOException的地方加上\前缀,明确指定去全局命名空间查找:

try{
    $pdo = new \PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);
    $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
} catch(\PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}

方案2:导入全局PDO类

在namespace App;下方添加use语句,导入全局的PDO和PDOException类,后续代码可直接使用类名:

namespace App;
use PDO;
use PDOException;

class Config {
    const PATH_TO_SQLITE_FILE = 'db/DeviceAssetRegister.db';
}

// 后续数据库连接代码无需修改,直接使用PDO即可

额外提示

你的配置文件中同时包含SQLite和MySQL的配置逻辑,但实际执行的是MySQL连接代码,而index.php用的是SQLite连接。如果这是误写,可以根据实际需求保留对应数据库的配置和连接代码。

内容的提问来源于stack exchange,提问作者double-happiness

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:26:27