我正在将旧的mysql_*函数中的一些代码更新为PDO.它连接没有问题,运行查询没有问题,但结果集为空.PDO :: query()应该返回一个PDOStatement对象,但我得到了回报.没有报告错误.
这是我的代码:
try { $DB = new PDO("mysql:host=localhost;dbname=dbname", "user", "pass"); $stmt = $DB->prepare("SELECT * FROM report_clientinfo"); $stmt->execute(); }catch(PDOException $e) { echo $e->getMessage() . "\n"; } echo gettype($stmt) . "\n"; if ($stmt) echo "true\n"; else echo "false\n"; $resultset = $stmt->fetchAll(); if(empty($resultset)) { exit("ERROR: getClientInfo query failed."); } $DB = null; print_r($resultset);
我看到的输出是:
object true ERROR:getClientInfo查询失败.
任何想法为什么它没有返回任何结果?
object true ERROR: getClientInfo query failed.
它看起来像你的PDOStatement $stmt
变量实际上被报告为一个对象,而不是" true
".然后代码true
在看到$stmt
非空时打印" " ,因为它是一个对象.
我建议您检查返回值$stmt->execute()
.您可能有SQL错误.例如,如果拼写错误的表名,或者dbname
您连接到的数据库" " 中没有该表,或者您登录的用户没有查询该表的权限.
还要检查$stmt->errorInfo()
以获取有关发生的任何错误的更多详细信息.