小编Nov*_*ode的帖子

Mysql SELECT COUNT(*)OR SELECT 1?PDO

人们早就知道PDO不支持COUNT(*),如下所示的查询会失败,因为它不会返回任何受影响的行,

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

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

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

互联网上有各种各样的消息来源声称;

"SELECT COUNT(*)
"SELECT COUNT(col)
"SELECT 1
Run Code Online (Sandbox Code Playgroud)

两者都是相同的(有一些差异)所以如何使用mysql哪个PDO无法正确返回真正的计数,

"SELECT 1 
Run Code Online (Sandbox Code Playgroud)

工作?

计数讨论的方法

为什么选择1比选择计数(*)更快?

php mysql pdo count

2
推荐指数
2
解决办法
4787
查看次数

标签 统计

count ×1

mysql ×1

pdo ×1

php ×1