问题:我在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)?
答案 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()。
答案 2 :(得分:0)
如果您不需要结果本身,只需要行数,我建议让SQLite
进行计数,即:
$count=$base->querySingle("SELECT count(id) FROM users")
将在$count
变量中存储用户表中的行数。
除此之外,循环$results->fetchArray()
并递增计数变量将起作用。