XAMPP环境下使用PDO读取MySQL表无返回无报错如何解决
PDO扩展安装说明
XAMPP默认已启用PDO及PDO_MySQL扩展,无需额外安装。你可以新建包含<?php phpinfo();的文件,在页面中搜索PDO确认扩展运行状态。
无法读取数据的问题修复
你遇到的无返回无报错的问题,是以下几处代码错误共同导致的:
1. SQL关键字拼写错误
你执行的测试SQL语句discribe users拼写错误,MySQL查询表结构的正确关键字是DESCRIBE(可简写为DESC),错误的SQL会导致执行失败。
2. PDO未开启错误抛出模式
默认PDO为静默错误模式,仅连接阶段会抛出异常,SQL执行错误不会主动提示,你需要在初始化PDO时配置错误模式,修改Database类构造函数中创建PDO实例的代码:
self::$con = new PDO($string,DB_USER,DB_PASS, [ // 开启异常错误模式,SQL执行出错会直接抛出异常 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 全局设置默认返回对象类型,后续fetch无需重复指定 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ ]);
3. read方法未绑定预处理参数
你预留的$data参数未传入execute方法,后续使用带占位符的预处理语句会无法正常传参,修改read方法中execute对应的代码:
$result = $stm->execute($data);
4. 单例方法返回值类型不统一
当前getInstence方法如果连接已存在返回PDO对象,连接不存在返回Database类实例,类型不一致会导致后续调用异常,修改为统一返回PDO连接对象:
public static function getInstence(){ if(!self::$con){ new self(); } return self::$con; }
提示:该方法名
getInstence为拼写错误,标准写法为getInstance,不影响运行但建议修正。
测试验证
修改完成后,将测试代码的SQL修正为正确写法:
$data = $db->read("DESCRIBE users");
执行后即可正常获取users表的结构信息。
内容的提问来源于stack exchange,提问作者user16688701
相关产品推荐
相关产品推荐

