我在我的 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/