从 Select 语句获取行数

发布于 2024-08-23 02:41:23 字数 278 浏览 2 评论 0原文

我有这个:

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

谢谢大家

I have this:

$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?

How do I get the number of rows returned from that SELECT statement?

Thanks all

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

堇年纸鸢 2024-08-30 02:41:23

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

关于 rowCount:

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

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

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

SELECT count(*) FROM this_table is an option...

Regarding rowCount:

PDOStatement::rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.

If the last SQL statement executed by the associated PDOStatement was a SELECT statement, some databases may return the number of rows returned by that statement. **

However, this behaviour is not guaranteed for all databases and should not be relied on for portable applications.

世态炎凉 2024-08-30 02:41:23

我找到了一个解决方案,使用 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()。

希望这对某人有用。

I have found a solution, using fetchAll and then using count on this array - which is what MySQL does anyway internally, a bit inefficient but it works for me.

$q = $db->query("SELECT ...");
$rows = $q->fetchAll();
$rowCount = count($rows);

From another question Chad provided this insight:

It seems as though the only reason
this was possible with MySQL is
because it internally fetched all the
result rows and buffered them, to be
able to give you this information. See
mysql_unbuffered_query(). If you use
that function instead of
mysql_query(), the mysql_num_rows()
function will not work. If you really
need to know the number of rows while
using PDO, you can fetch all of the
rows from PDO into an array and then
use count().

Hope this is useful to someone.

心意如水 2024-08-30 02:41:23

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

mysqli_num_rows($stmt);

You can use mysqli_num_rows() function here. It returns number of rows from the sql query.

mysqli_num_rows($stmt);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文