从Select语句中获取行数

Abs*_*Abs 13 php sql odbc pdo count

我有这个:

$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?
Run Code Online (Sandbox Code Playgroud)

如何获取从该SELECT语句返回的行数?

谢谢大家

Len*_*rri 8

SELECT count(*) FROM this_table 是一个选择......

关于rowCount:

PDOStatement :: rowCount()返回由相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数.

如果关联的PDOStatement执行的最后一个SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数.**

但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序.


Abs*_*Abs 5

我找到了一个解决方案,使用fetchAll然后在这个数组上使用count - 这就是MySQL在内部做的事情,效率有点但它对我有用.

$q = $db->query("SELECT ...");
$rows = $q->fetchAll();
$rowCount = count($rows);
Run Code Online (Sandbox Code Playgroud)

另一个问题是,查德提供了这样的见解:

这似乎是MySQL可能的唯一原因是因为它在内部获取所有结果行并缓冲它们,以便能够为您提供此信息.请参阅mysql_unbuffered_query().如果使用该函数而不是mysql_query(),则mysql_num_rows()函数将不起作用.如果在使用PDO时确实需要知道行数,可以将PDO中的所有行提取到数组中,然后使用count().

希望这对某人有用.

  • 这是一个坏主意.如果您的SELECT返回数百万行怎么办? (15认同)