我在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();
}
请你帮帮我吗?
答案 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
的返回值。