Я использую функцию 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);
Что я делаю неправильно и как я могу это исправить?
Согласно вашему комментарию, если вы просто хотите вернуть количество записей, вы можете обернуть свой запрос в 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)
.