由于我的过程几乎已完成,用PDO而不是mysql_*
命令重写网页,我现在正在测试我已更改的功能。似乎我mysql_result(mysql_query()
的改变函数总是返回true,为什么呢?让我们看看原始和更改的代码:
if (mysql_result(mysql_query("SELECT COUNT(*) FROM account WHERE id='".$_SESSION["user_id"]."' AND online=1"), 0)>0)
{
return true;
}
else
return false;
并在此处更改了代码:
$stmt = $db_login->prepare("SELECT COUNT(*) FROM account WHERE id=:id AND online=1");
$stmt->bindValue(':id', $_SESSION["user_id"], PDO::PARAM_INT);
$stmt->execute();
$results_login = $stmt->fetch(PDO::FETCH_ASSOC);
$rows = count($results_login);
if ($rows > 0)
{
return true;
}
else
return false;
那么问题是,即使列有在线= 0,它总是返回true?谢谢
答案 0 :(得分:1)
$stmt->fetch
从结果集中提取一行。你得到的是一个包含所有选定列的数组,如下所示:
array(
'COUNT(*)' => 42
)
该数组上的count()
始终会生成1
。
您需要检查已获取行的内容:
if ($result_login['COUNT(*)'] > 0)
最好将此列别名为更好的名称:
SELECT COUNT(*) AS `count` ...
然后:
if ($result_login['count'] > 0)