Давно известно, что 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
работа
Методы подсчета обсуждений
Почему Select 1 быстрее, чем Select count (*)?