gpt4 book ai didi

php - 如何有效替换PDO中的(mysql_result(mysql_query()))?

转载 作者:行者123 更新时间:2023-11-29 14:25:51 26 4
gpt4 key购买 nike

因为我用 PDO 而不是 mysql_* 重写 web 的过程几乎完成了命令我现在正在测试我更改的功能。看来我改变了 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;

那么问题是为什么即使列的 online=0 也总是返回 true ?谢谢

最佳答案

$stmt->fetch 从结果集中获取一行。您从中得到的是一个包含所有选定列的数组,如下所示:

array(
'COUNT(*)' => 42
)

对该数组执行 count() 将始终得到 1

您需要检查提取的行的内容:

if ($result_login['COUNT(*)'] > 0)

最好将此列命名为更好的名称:

SELECT COUNT(*) AS `count` ...

然后:

if ($result_login['count'] > 0)

关于php - 如何有效替换PDO中的(mysql_result(mysql_query()))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10967920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com