从Select语句中获取行数

时间:2010-02-21 00:26:29

标签: php sql pdo count odbc

我有这个:

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

全部谢谢

2 个答案:

答案 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()。

希望这对某人有用。