в настоящее время я использую:
$result = new SQLite3(sprintf("users/USERIDS_DB.sqlite")); $numRows = $result->exec ("SELECT count(*) FROM USERIDS"); echo sprintf("the number of rows are: %d", $numRows);
но результат равен 1, когда ему должно быть 6 (количество строк, которые я создал с помощью дополнения firefox sqlite3)
Может ли кто-нибудь помочь, пожалуйста?
Из документации :
public bool SQLite3 :: exec (строка $ query)
Выполняет безрезультатный запрос к данной базе данных.
Эти методы возвращают логический, а не набор результатов. Когда вы преобразуете true
в целое число, оно станет равным 1
.
Вы должны использовать SQLite3::query()
. Пример (непроверенный):
$rows = $result->query("SELECT COUNT(*) as count FROM USERIDS"); $row = $rows->fetchArray(); $numRows = $row['count'];
Btw, назвав экземпляр SQLite3-класса $result
может ввести в заблуждение (особенно в среде БД). Я бы назвал это $db
или $connection
.
$db = new SQLite3('filename.db3'); $count = $db->querySingle("SELECT COUNT(*) as count FROM tablename"); echo $count;
$result = $db->query("SELECT * FROM db_name") $row=$result->fetchArray(SQLITE3_ASSOC); // check for empty result if ($row != false) { // do something here if record exists }
<?php function SqliteNumRows($query){ $numRows = 0; while($rows = $query->fetchArray()){ ++$numRows; } return $numRows; } ?>
Это действительно помогло мне это на самом деле вы можете попробовать
Вот рабочий способ получить количество строк, так как ни sqlite_num_rows($result)
ни $result->numRows()
работают на SQLite3:
<?php $db = new SQLite3('database.db'); $results = $db->query('SELECT COUNT(*) FROM (SELECT `id`,* FROM `table` ORDER BY `id` ASC);'); while ($row = $results->fetchArray()) { echo $row["COUNT(*)"]; } ?>