Получите Количество строк от оператора Select

У меня есть это:

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename", $username, $password);

$sql = "SELECT * FROM this_table";

$stmt = $dbh->query($sql);

//num of rows?

Как я получаю количество строк, возвращенных из того оператора SELECT?

Спасибо все

13
задан Leniel Maccaferri 3 November 2012 в 11:45
поделиться

2 ответа

Я нашел решение, используя fetchAll и затем используя count на этом массиве - это то, что MySQL делает в любом случае внутренне, немного неэффективно, но это работает для меня.

$q = $db->query("SELECT ...");
$rows = $q->fetchAll();
$rowCount = count($rows);

Из другого вопроса Chad сделал следующее замечание:

Похоже, что единственная причина. это было возможно с MySQL. потому что он внутренне извлекал все строки результатов и буферизирует их, чтобы чтобы дать вам эту информацию. См. mysql_unbuffered_query(). Если вы используете эту функцию вместо mysql_query(), функция mysql_num_rows() не будет работать. Если вам действительно необходимо узнать количество строк при при использовании PDO, вы можете получить все строки из PDO в массив, а затем использовать функцию count().

Надеюсь, это будет кому-то полезно.

5
ответ дан 2 December 2019 в 00:46
поделиться

SELECT count (*) FROM this_table - опция ...

Что касается rowCount:

PDOStatement :: rowCount () возвращает количество строк, затронутых последним оператором DELETE, INSERT или UPDATE, выполненным соответствующим PDOStatement объект.

Если последним оператором SQL, выполненным связанным PDOStatement, был оператор SELECT, некоторые базы данных могут вернуть количество строк, возвращенных этим оператором. **

Однако такое поведение не гарантируется для всех баз данных и не должно использоваться для переносимых приложений.

8
ответ дан 2 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: