我有这个:
$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语句返回的行数?
全部谢谢
答案 0 :(得分:8)
SELECT count(*) FROM this_table
是一个选项......
关于rowCount:
PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数。
如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。 **
但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序。
答案 1 :(得分:5)
我找到了一个解决方案,使用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()。
希望这对某人有用。