计算sqlite结果集中缓冲的行数

时间:2014-07-22 07:27:16

标签: php sqlite

我使用count函数来获取结果集中缓冲的行数。

但即使结果集为空,它总是将count作为一个返回。

请参阅以下代码:

$dbhandle = new SQLite3("sqlitedb_111.db");
$selQuery1 = "SELECT id,dbname,tabname,fieldname FROM scan_results ORDER BY id ASC LIMIT  0,10";
$resQuery1 = $dbhandle->query($selQuery1);
print count($resQuery1);

我做错了什么,如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

结果是一个数组。找到数组的大小。

    $dbhandle = new SQLite3("sqlitedb_111.db");
    $selQuery1 = "SELECT id,dbname,tabname,fieldname FROM scan_results ORDER BY id ASC LIMIT  0,10";
    $resQuery1 = $dbhandle->query($selQuery1);
    $noofrows=sizeof($resQuery1);
    echo $noofrows;

答案 1 :(得分:2)

根据your comment,如果您只想返回记录数,可以将查询包装在SELECT COUNT(*)中,并将$dbhandle->query更改为$dbhandle->querySingle。这可以使用或不使用LIMIT

$dbhandle = new SQLite3("sqlitedb_111.db");
$selQuery1 = "SELECT COUNT(*) FROM (SELECT id,dbname,tabname,fieldname FROM scan_results ORDER BY id ASC LIMIT  0,10)";
$resQuery1 = $dbhandle->querySingle($selQuery1);
print count($resQuery1);

答案 2 :(得分:1)

SQLite是一个嵌入式数据库,即没有客户端/服务器通信开销。 因此,它可以动态返回结果;任何时候都只有一行缓冲。

要获取结果行数,您必须单步执行结果,或执行SELECT COUNT(*) FROM (original query)之类的内容。

答案 3 :(得分:0)

在结果集上调用numRows()。

来自http://php.net/manual/en/function.sqlite-num-rows.php

<?php
$db = new SQLiteDatabase('mysqlitedb');
$result = $db->query("SELECT * FROM mytable WHERE name='John Doe'");
$rows = $result->numRows();

echo "Number of rows: $rows";
?>