Или второй способ

ководства по PDO:

PDOStatement :: rowCount () возвращаетколичество рядов пострадавших от последнегоУДАЛИТЬ, ВСТАВИТЬ или ОБНОВИТЬ оператор, выполняемый соответствующим объектом PDOStatement.

Если последний оператор SQL, выполненный связанным PDOStatement, былВЫБРАТЬ заявление,некоторые базы данных могут возвращать количество строк, возвращаемых этим оператором, Тем не менее, это поведениене гарантируется для всех баз данных и не следует полагаться на портативные приложения.

Я узнал это совсем недавно. Я только что изменил свой слой абстракции БД, чтобы не использоватьSELECT COUNT(1) ... больше, потому что просто запрос фактических строк и затем подсчет результата будет намного более эффективным. И теперь PDO не поддерживает это !?

Я не использую PDO для MySQL и PgSQL, но я делаю для SQLite. Есть ли способ (без полного изменения обратно dbal) подсчитывать строки в PDO? В MySQL это будет примерно так:

$q = $db->query('SELECT a, b, c FROM tbl WHERE oele = 2 GROUP BY boele');
$rows = $q->num_rows;
// and now use $q to get actual data

С драйверами MySQLi и PgSQL это возможно. Со всеми PDO это не так !?

PS. Моим первоначальным решением было расширить метод SQLResult-> count (мой собственный), чтобы заменитьSELECT ... FROM поSELECT COUNT(1) FROM и просто вернуть это число (очень неэффективно, но только для SQLite PDO). Это не достаточно хорошо, потому что в приведенном выше примере запросаGROUP BY, который изменит значение / функциюCOUNT(1).

Ответы на вопрос(11)

Ваш ответ на вопрос