Получить количество строк из оператора 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?

Спасибо всем

SELECT count(*) FROM this_table – это опция …

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

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

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

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

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

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

Из другого вопроса Чад представил это понимание:

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

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