目前我正在使用:
$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创建的行数)
有人可以帮忙吗?
答案 0 :(得分:17)
$db = new SQLite3('filename.db3');
$count = $db->querySingle("SELECT COUNT(*) as count FROM tablename");
echo $count;
答案 1 :(得分:9)
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;