gpt4 book ai didi

php - 在 PDO SELECT COUNT(*) 类型中使用 fetch() 时出现问题

转载 作者:行者123 更新时间:2023-11-29 13:32:11 24 4
gpt4 key购买 nike

大家好,我有以下内容:

$sql = "SELECT COUNT(*) pk_ID FROM "._DB_NAME."."._DB_PREFIX."_Device
WHERE vc_Serial = :deviceID";
$sth=$DBH->prepare($sql);
$sth->execute(array(':deviceID' =>$device_id));

//give amount of results
$row = $sth->fetch(PDO::FETCH_ASSOC);
$count = $sth->rowCount();

通过此代码,我可以查看有多少结果受到 $count 的影响。然后存储一个值 $fk_DeviceID = $row['pk_ID'];问题是我没有收到返回的正确 ID。我不知道是否SELECT COUNT(*)正在影响任何事情或诸如此类的事情。

感谢建议和想法!

最佳答案

首先,您似乎需要将查询更改为:

SELECT  
COUNT(*) as pkCount,
pk_ID
FROM
"._DB_NAME."."._DB_PREFIX."_Device
WHERE
vc_Serial = :deviceID
group by
pk_id

由于您似乎正在尝试获取两列,因此我在术语之间添加了逗号,然后在您计算列时添加了 group by 语句 - 因此您需要进行分组基于聚合的结果。

其次,假设只有一个 pk_ID。 $count 变量仅显示 1,而不是数据库中计数的项目数,因为它计算记录集中有多少行。

您可能想这样做:

echo $row['pkCount'];

这将显示查询本身中计数/聚合的行数,这可能与查询实际返回的行数不同。

编辑(每条评论):

首先,SQL 本身有点无聊。虽然我无法在不重做轮子的情况下真正跳入并解释比这里更多的内容,但我可以 provide a link I think will be useful to you you这是我写的一个非常长的问答,解释了很多 SQL 基础知识/中间知识,包括查询、聚合、连接以及各种好东西。请务必阅读本文,它的作用不仅仅是整理您评论的第一部分。

至于我答案的第二部分,当您在查询中进行聚合(例如计数匹配行)时,数字将在行内返回,如下所示:

ID    Count
1 5
2 8

因此,当您获取一行数组时,您将得到如下内容:

$array=('ID' => 1, 'Count' => 5)

但是,当您运行 num_rows() 时,它会计算记录集中的所有行 - 在上面的情况下为 2,因为显示的结果中有两行。

我希望这能进一步帮助您,如果您仍然需要更详细的信息,请告诉我,我会看看我能做些什么。

关于php - 在 PDO SELECT COUNT(*) 类型中使用 fetch() 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19260687/

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