Php 统计sqlite3记录集中的记录数

Php 统计sqlite3记录集中的记录数,php,sqlite,Php,Sqlite,问题:我在php中使用sqlite 2.1 db和php,在php中使用sqlite数据库对象,现在我正在升级到sqlite 3.x,所以我也想在php中使用SQLite3,我面临的一个问题是,以前在sqlite数据库对象中,我很容易通过查询数据库来计算返回的记录数,但现在使用SQLite3我无法做到这一点 SQLiteDatabase的旧代码示例: $base= new SQLiteDatabase('users.db'); $query = 'select id from users'; $

问题:我在php中使用sqlite 2.1 db和php,在php中使用sqlite数据库对象,现在我正在升级到sqlite 3.x,所以我也想在php中使用SQLite3,我面临的一个问题是,以前在sqlite数据库对象中,我很容易通过查询数据库来计算返回的记录数,但现在使用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中的行数


我不知道您正在使用的particualr API,但有可能$results存在一个真正的含义,即正在处理查询,我不知道如何获得结果,请检查您的API。我想这就是链接

显然,您必须执行类似于$rows->fetchPDO::FETCH_OBJ->rows的操作;但无论如何,您都需要从对象获取结果

阅读你的API


祝你好运

我刚刚找到一篇关于如何做到这一点的有趣文章。这有点像预兆,但它很管用。基本上,将PDO与SQLite3一起使用,而不是直接使用它。PDO为您提供了一个“fetchAll”方法,然后可以调用count


参考:

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

$count=$base->querySingle("SELECT count(id) FROM users") 
将用户表中的行数存储在$count变量中


除此之外,循环使用$results->fetchArray和递增计数变量也可以。

我在这里查阅了手册,但找不到相关选项。这就是我在这里提问的原因。^^完全没有用的回答。就像没有人费心阅读手册来发现无法获得结果中返回的行数一样。干得好。