【问题标题】:Get Number of Rows from a Select statement从 Select 语句中获取行数
【发布时间】:2011-01-19 05:53:34
【问题描述】:

我有这个:

$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


    【解决方案1】:

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

    关于行数:

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

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

    但是,并非所有数据库都可以保证这种行为,并且不应依赖于可移植应用程序。

    【讨论】:

    【解决方案2】:

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

    希望这对某人有用。

    【讨论】:

    • 嗨,你有你提到的问题的链接吗?谢谢你
    • 这是一个糟糕的想法。如果您的 SELECT 返回数百万行怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    相关资源
    最近更新 更多