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

如何使用自定义Database类查询MySQL数据,查询结果异常怎么解决

问题原因

你封装的Database类存在两处核心问题:

  1. DSN连接字符串拼写错误
    构造方法中创建PDO实例的DSN参数缺少host和值之间的等于号:
    原错误代码:
$this->pdo = new PDO("mysql:host".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);

拼接后得到的DSN为mysql:hostlocalhost;dbname=database,不符合PDO的DSN格式规范,即使你看到输出了success,也不代表实际连接到了你期望的目标数据库。
2. 未开启PDO错误提示、未指定字符集
PDO默认采用静默报错模式,连接、执行阶段的错误不会主动输出,你无法感知到异常;同时如果两个测试示例的默认字符集不一致,也会导致字符串条件匹配失效,查询不到预期结果。


修复方案

直接修改Database.php的构造方法即可:

protected function __construct(){
    // 补全host参数后的=,指定字符集,开启PDO异常报错
    $this->pdo = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=utf8mb4", DB_USER, DB_PASS, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ]);
    echo "success"; 
}

效果验证

修复后重新运行index2.php,就能得到和index1.php一致的查询结果。

内容的提问来源于stack exchange,提问作者Kyv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:24:03