gpt4 book ai didi

php - Mysql SELECT COUNT(*) 或 SELECT 1? PDO

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

人们早就知道 PDO 不支持 COUNT(*) 并且像下面这样的查询会失败,因为它不会返回任何受影响的行,

$q = $dbc -> prepare("SELECT COUNT(*) FROM table WHERE id = ?");
$q -> execute(array($id));
echo $q -> rowCount();

做一些研究我发现你也可以使用其他计数方法而不是根本不使用计数来获取行数,例如下面的查询应该与上面的查询相同但对于 PDO 将返回正确的,

$q = $dbc -> prepare("SELECT 1 FROM table WHERE id = ?");
$q -> execute(array($id));
echo $q -> rowCount();

互联网上有各种来源声称;

"SELECT COUNT(*)
"SELECT COUNT(col)
"SELECT 1

彼此都是一样的(有一些不同)那么为什么使用 mysql 而 PDO 不能正确返回一个真实的计数呢?

"SELECT 1 

工作?

计数方法讨论

Why is Select 1 faster than Select count(*)?

最佳答案

PDO does not support COUNT(*)

WTF?当然PDO支持COUNT(*),你用错了。

$q = $dbc->prepare("SELECT COUNT(id) as records FROM table WHERE id = ?");
$q->execute(array($id));
$records = (int) $q->fetch(PDO::FETCH_OBJ)->records;

如果您使用的是 MySQL 以外的驱动程序,您可能必须先测试 rowCount,就像这样。

$records = (int) ($q->rowCount()) ? $q->fetch(PDO::FETCH_OBJ)->records : 0;

关于php - Mysql SELECT COUNT(*) 或 SELECT 1? PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8221729/

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