小编典典

从Select语句获取行数

sql

我有这个:

$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语句返回的行数?

谢谢大家


阅读 330

收藏
2021-03-17

共1个答案

小编典典

我找到了一个解决方案,先使用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()。

希望这对某人有用。

2021-03-17