计算sqlite3记录集中的记录数

时间:2011-01-19 13:27:31

标签: php sqlite

问题:我在PHP中使用SQLiteDatabase对象使用sqlite 2.1 db,现在我正在升级到sqlite 3.x,所以也想在PHP中使用SQLite3,我面临的问题是以前在SQLiteDatabase对象我很容易通过查询到数据库来计算返回的记录数,但是现在使用SQLite3我无法做同样的事情。

使用SQLiteDatabase示例旧代码:

$base= new SQLiteDatabase('users.db');
$query = 'select id from users';
$results = $base->query($query, SQLITE_ASSOC);
echo sizeof($results);

输出此代码生成

50

使用新SQLite3示例旧代码:

$base = new SQLite3('users.db');
$query = 'select id from users';
$results = $base->query($query);
echo sizeof($results);

但是上面的代码会返回:

1

而不是50,它显示1,

  

问:如何在SQLite3中计算记录集中的行数($ results)?

3 个答案:

答案 0 :(得分:0)

我不知道您正在使用的特定API,但可能是$结果只是保持“真实”意味着正在处理查询,我不知道您如何得到结果,检查你的API。我认为这是链接http://us.php.net/manual/en/book.pdo.php

显然你必须做类似于$ rows-> fetch(PDO :: FETCH_OBJ) - > rows;但无论如何你需要从对象中获取结果。

阅读您的API。

祝你好运

答案 1 :(得分:0)

我刚刚发现了一篇关于如何做到这一点的有趣文章。这有点像一个小屋,但它确实有效。基本上,将PDO与SQLite3一起使用而不是直接使用它。 PDO为您提供了一个'fetchAll()'方法,然后您可以调用count()。

参考:http://blog.digitalneurosurgeon.com/?p=947

答案 2 :(得分:0)

如果您不需要结果本身,只需要行数,我建议让SQLite进行计数,即:

$count=$base->querySingle("SELECT count(id) FROM users") 

将在$count变量中存储用户表中的行数。

除此之外,循环$results->fetchArray()并递增计数变量将起作用。