为什么PDO没有显示任何结果?

时间:2012-07-24 06:37:33

标签: 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();
}

请你帮帮我吗?

1 个答案:

答案 0 :(得分:3)

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

$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的返回值。