Используя SQlite3 в PHP, как посчитать количество строк в наборе результатов? - PullRequest
8 голосов
/ 06 апреля 2010

в настоящее время я использую:

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

Кто-нибудь может помочь, пожалуйста?

Ответы [ 6 ]

17 голосов
/ 21 июля 2012
$db = new SQLite3('filename.db3');
$count = $db->querySingle("SELECT COUNT(*) as count FROM tablename");
echo $count;
9 голосов
/ 06 апреля 2010

Из документации :

public bool SQLite3 :: exec (строка $ query)

Выполняет безрезультатный запрос к данной базе данных.

Этот метод возвращает логическое значение, а не набор результатов. Когда вы конвертируете true в целое число, оно становится 1.

Вы должны использовать SQLite3::query(). Пример (не проверено):

$rows = $result->query("SELECT COUNT(*) as count FROM USERIDS");
$row = $rows->fetchArray();
$numRows = $row['count'];

Кстати, именование экземпляра класса SQLite3 $result может вводить в заблуждение (особенно в среде БД). Я бы назвал это $db или $connection.

3 голосов
/ 26 июля 2012
$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
    }
0 голосов
/ 04 ноября 2018

Это полезно, если у вас есть условия в подсчете select запрос:

$stmt = $db->prepare('SELECT COUNT(*) AS `count` FROM `tablename` WHERE `foo`=:foo');
$stmt->bindValue(':foo', $foo);
$stmt->execute();
$count = $stmt->fetchColumn();
echo $count;
0 голосов
/ 20 апреля 2017

Вот рабочий способ получить количество строк, так как ни 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(*)"];
        }
?>
0 голосов
/ 29 января 2017
<?php
    function SqliteNumRows($query){
        $numRows = 0;
        while($rows = $query->fetchArray()){
            ++$numRows;
        }
        return $numRows;
    }
?>

Это действительно помогло мне, это работает на самом деле, вы можете попробовать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...