【问题标题】:Fetch Number of Rows in a SQLite3 query获取 SQLite3 查询中的行数
【发布时间】:2013-08-03 00:44:02
【问题描述】:

有人能解释一下如何使用 SQLite3 来给出查询中找到的行数吗?

mysql 有 mysql_num_rows 和 SQLite2 有类似的功能,但 SQLite3 开发中的某个人似乎忘记了添加该功能。

我在这里和其他网站上看到的例子并没有回答这个问题,而是只会产生更多的问题。

所以...

我有一个查询,例如 $queryStr = $d->query("SELECT * FROM visitor WHERE uid='{$userid}' AND account='active';");

我想知道的是如何找出 $queryStr 中有多少结果

我不是在寻找数据库中的行数,只是“查询结果”中的行数

【问题讨论】:

    标签: php sqlite


    【解决方案1】:

    SQLite 动态计算查询结果(因为这对于没有网络通信的嵌入式数据库更有效)。

    因此,如果不实际遍历所有这些记录,就不可能找出一个查询返回了多少条记录。

    如果可能的话,您应该构建您的算法,以便您在阅读之前不需要知道记录的数量。 否则,您必须执行一个单独的查询,该查询使用SELECT COUNT(*) 来返回记录数,如下所示:

    $countQuery = $d->query("SELECT COUNT(*) FROM visitors WHERE uid='{$userid}' AND account='active';");
    

    【讨论】:

    • 我看到其他帖子的回复并没有回答问题,你如何获得查询结果中的行数,奇怪的是结果数是未知的查询已为您提取了所有这些结果。当您必须运行相同的查询两次时,这不是查找结果数量的好方法。
    • 问题仍然是如何使用 SELECT COUNT(*) FROM ... 以及究竟是什么...?
    • 查询没有拉取记录;每条记录都使用fetchArray单独提取。
    • 好的,我试过了...我收到一条错误消息 注意:SQLite3Result 类的对象无法在 H:\Program Files\Abyss Web Server\htdocs\dologin.php 中转换为 int第 15 行和第 15 行是... $numRows = (int)($d->query( sprintf($queryString,"COUNT(*)",$u,$p) ) ); $queryString 是 $queryString = "SELECT %s FROM visitor WHERE uid='%s' AND account='active';--";所以我摸不着头脑,因为没有演员表(int),错误是一样的。
    • COUNT(*) 查询是一个普通查询,您必须像处理任何其他查询一样处理它;唯一的区别是您返回的是单行和单列。
    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2012-05-05
    • 2018-01-07
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多