php - 为什么PDO不显示任何结果?

标签 php mysql pdo fetch

我在我的 PHP 应用程序中使用了 PDO。但是我对 fetch() 函数有疑问。每当我计算 fetch() 的结果时,它都会告诉我结果集中有一些东西。但是当我想给他们看的时候,它却没有什么可展示的。

try
{ 
    $sql = "SELECT id,salt FROM tbl_admin WHERE username = ? AND password = ? LIMIT 1";
    $q = $db->prepare($sql);
    $q->execute(array($username,$password));
    $rows = $q->columnCount();

    if ($rows > 0)
    {
        $r = $q->fetch(PDO::FETCH_BOTH);
        echo(count($r).'<br />'); // Prints 1
        print_r($r); // Nothing to print ...
        die();
    }
    else
    {
        die('error');
    }
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

你能帮帮我吗?

最佳答案

您计算的是列数,而不是行数。

$rows = $q->columnCount();

应该是

$rows = $q->rowCount();


也就是说,rowCount 用于 UPDATE、INSERT 或 DELETE 查询。所以这不是这里的问题。

首先还应该检查 $q->execute 是否返回 true 或 false。

其次,您应该检查 $q->fetch 是否返回 true 或 false。

给定你的代码

$r = $q->fetch(PDO::FETCH_BOTH);
echo(count($r).'<br />'); // Prints 1

尝试以下操作。

echo(count(false));

您会注意到这也输出 1。

所以解决方案是,在假设它返回有效行之前,您需要检查 $q->fetch 的返回值。

关于php - 为什么PDO不显示任何结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11625413/

相关文章:

php - 如何在 MySql 查询方法中写入开始日期和开始日期?

sql - MySql:可以对分组语句进行分组吗?

PHP PDO 没有活跃的事务

php - PHP/MySQL 中的 PDO 和 UTF-8 特殊字符?

php - MySQL 搜索与搜索项中的整数匹配

php - 如何通过 cURL 发布数组字段数据?

Php get_result() 和 fetch_assoc() 替代方案

php - 第 1 页之后分页不起作用?

php - PDO 使用正确的值但将错误的值插入数据库

php - 我可以加密 PHP 源代码或编译它以便其他人看不到它吗?如何?