我有这个:
$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() 返回受相应 PDOStatement 对象执行的最后一个 DELETE、INSERT 或 UPDATE 语句影响的行数。
如果关联的 PDOStatement 执行的最后一个 SQL 语句是 SELECT 语句,则某些数据库可能会返回该语句返回的行数。 **
但是,并不能保证所有数据库都能实现此行为,并且不应依赖于可移植应用程序。
我找到了一个解决方案,使用 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()。
希望这对某人有用。
您可以在此处使用 mysqli_num_rows() 函数。它返回 sql 查询的行数。
mysqli_num_rows($stmt);