Количество строк, буферизированных в наборе результатов sqlite

Я использую функцию 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); 

Что я делаю неправильно и как я могу это исправить?

Related of "Количество строк, буферизированных в наборе результатов sqlite"

Согласно вашему комментарию, если вы просто хотите вернуть количество записей, вы можете обернуть свой запрос в SELECT COUNT(*) и сменить $dbhandle->query $dbhandle->querySingle на $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); 

Результат – массив. найдите размер массива.

  $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 () в результирующем наборе.

С 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"; ?> 

SQLite – это встроенная база данных, т. Е. Накладные расходы на клиент / сервер отсутствуют. Поэтому он может динамически возвращать результаты; в любой момент буферизируется только одна строка.

Чтобы получить количество строк результатов, вам нужно либо выполнить результаты, либо выполнить что-то вроде SELECT COUNT(*) FROM (original query) .