php - PDO查询问题

标签 php mysql pdo

我正在将一些代码从旧的 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/

相关文章:

php - 在 php 中将视频转换为 MP3?

mysql - Entity Framework : Set MySQL custom environment variables

java - SQLException : Before start of result set

PHP关于单实例连接mysql

php - 如何在 PDO fetchAll 中正确使用 while 循环

php - MySQL 休眠线程耗尽了我所有的连接

php - 在afterSave()中保存模型实例,它不会递归运行吗?

php - 了解 PDO/Prepared Statements 如何与多种数据库类型配合使用

php - 具有自定义日期范围的 jQuery 日历

python - 使用 Python 的 MySQLdb 更新 MySQL 表的问题