我正在将一些代码从旧的 mysql_* 函数更新到 PDO。它连接没有问题,运行查询没有问题,但结果集为空。 PDO::query() 应该返回一个 PDOStatement 对象,但我得到了 true 作为返回。没有错误报告。
这是我的代码:
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);
我看到的输出是:
对象 真的 错误:getClientInfo 查询失败。
知道为什么它没有返回任何结果吗?
最佳答案
object
true
ERROR: getClientInfo query failed.
在我看来,您的 PDOStatement $stmt
变量实际上被报告为一个对象,而不是“true
”。当代码发现 $stmt
为非空时,它会打印“true
”,因为它是一个对象。
我建议您检查 $stmt->execute()
的返回值。您可能遇到 SQL 错误。例如,如果您拼错了表名,或者该表在您连接的数据库“dbname
”中不存在,或者您登录的用户没有查询该表的权限.
同时检查 $stmt->errorInfo()
以获取有关发生的任何错误的更多详细信息。
关于php - PDO查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/405782/