在PHP中使用SQlite3如何计算结果集中的行数?

时间:2010-04-06 16:43:53

标签: php count sqlite

目前我正在使用:

$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 addon创建的行数)

有人可以帮忙吗?

6 个答案:

答案 0 :(得分:17)

$db = new SQLite3('filename.db3');
$count = $db->querySingle("SELECT COUNT(*) as count FROM tablename");
echo $count;

答案 1 :(得分:9)

来自documentation

  

public bool SQLite3 :: exec(string $ query)

     

对给定数据库执行无结果查询。

此方法返回布尔值,而不是结果集。当您将true转换为整数时,它将变为1

您应该使用SQLite3::query()。示例(未经测试):

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

顺便说一下,命名SQLite3类$result的实例可能会产生误导(特别是在数据库环境中)。我会称之为$db$connection

答案 2 :(得分:3)

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

答案 3 :(得分:0)

<?php
    function SqliteNumRows($query){
        $numRows = 0;
        while($rows = $query->fetchArray()){
            ++$numRows;
        }
        return $numRows;
    }
?>

这真的对我有帮助,实际上你可以尝试一下

答案 4 :(得分:0)

这是一种获取行数的工作方式,因为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(*)"];
        }
?>

答案 5 :(得分:0)

当您在计数select查询中有条件时,这很有用:

$stmt = $db->prepare('SELECT COUNT(*) AS `count` FROM `tablename` WHERE `foo`=:foo');
$stmt->bindValue(':foo', $foo);
$stmt->execute();
$count = $stmt->fetchColumn();
echo $count;