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

Php 计数sqlite结果集中缓冲的行数,php,sqlite,Php,Sqlite,我使用count函数来获取结果集中缓冲的行数 但即使resultset为空,它也总是将count返回为1 请参阅下面的代码: $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);

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

但即使resultset为空,它也总是将count返回为1

请参阅下面的代码:

$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);

我做错了什么?如何修复此问题?

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

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

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

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

对结果集调用numRows


对结果集调用numRows


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


要获得结果行的数量,您必须单步遍历结果,或者执行类似于从原始查询中选择计数*的操作。

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

要获得结果行的数量,您必须单步遍历结果,或者从原始查询执行类似于SELECT COUNT*的操作。

如果您只想返回记录的计数,您可以将查询包装在SELECT COUNT*中,并将$dbhandle->query更改为$dbhandle->querySingle。这将有或无限制地工作

根据,如果您只想返回记录计数,您可以将查询包装在SELECT count*中,并将$dbhandle->query更改为$dbhandle->querySingle。这将有或无限制地工作


sizeof函数也总是将count返回为1,即使总记录计数大于1,也要检查数组的外观。$resQuery1总是返回SQLite3Result对象,但当我调用$resQuery1->fetchArraySQLITE3_ASSOC时,它给我的resultsetsizeof函数也总是将count返回为1,即使总记录计数也是如此超过1个变量转储并检查数组的外观。$resQuery1总是返回SQLite3Result对象,但当我调用$resQuery1->fetchArraySQLITE3_ASSOC时,它会给我结果。我使用的是sqlite3,在sqlite3中,此numRows函数不工作抱歉,我的错误。我想你不想返回结果然后计数是有原因的?嗨,我使用的是sqlite3,在sqlite3中,这个numRows函数不工作抱歉,我的错误。我假设您不想返回结果然后对其进行计数是有原因的?是的,这是真的,但问题在于我的sql查询中使用了limit。所以,当我尝试执行类似于SELECT count*FROM scan_results ORDER BY id ASC LIMIT 0的查询时,它总是返回整个表的总计数,而不是指定限制内的计数,即如果该限制内没有数据,它应该返回0是的,这是真的,但问题在于我使用的sql查询中存在限制。因此,当我尝试执行类似于SELECT count*FROM scan_results ORDER BY id ASC LIMIT 0,10的查询时,它总是返回整个表的总计数,而不是指定限制内的计数,即如果该限制内没有数据,它应该返回0谢谢您的查询帮助我解决问题这是我的新代码:$selcnt=选择计数*作为根据id ASC限制从扫描结果顺序选择*的计数0,10;$rescnt=$dbhandle->query$selcnt;$row=$rescnt->fetchArray;打印$count=$row['count'];感谢您的查询帮助我解决我的问题这里是我的新代码:$selcnt=SELECT COUNT*as COUNT FROM SELECT*FROM scan_results ORDER BY id ASC LIMIT 0,10;$rescnt=$dbhandle->query$selcnt;$row=$rescnt->fetchArray;打印$count=$row['count'];
$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);