从 Select 语句获取行数

问题描述 投票:0回答:3

我有这个:

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

谢谢大家

php sql pdo count odbc
3个回答
8
投票

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

关于 rowCount:

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

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

但是,并不能保证所有数据库都能实现此行为,并且不应依赖于可移植应用程序。


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

希望这对某人有用。


-1
投票

您可以在此处使用 mysqli_num_rows() 函数。它返回 sql 查询的行数。

mysqli_num_rows($stmt);
© www.soinside.com 2019 - 2024. All rights reserved.