人们早就知道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)
工作?
计数讨论的方法