我使用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);
我做错了什么,如何解决这个问题?
答案 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";
?>