1

我在我的 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();
}

你能帮帮我吗?

4

1 回答 1

3

您正在计算列数,而不是行数。

$rows = $q->columnCount();

这应该是

$rows = $q->rowCount();


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

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

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

给定您的代码

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

试试下面的。

echo(count(false));

你会注意到这也输出 1。

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

于 2012-07-24T06:41:51.943 回答