sqlite3 db上的php查询只返回第一行

时间:2011-11-16 21:30:42

标签: php sqlite

我使用PHP创建了一个Sqlite3数据库:

$db = new SQLite3('mysqlitedb.db');
$db->exec('CREATE TABLE foo (bar STRING)');
$db->exec("INSERT INTO foo (bar) VALUES ('This is a test')");
$db->exec("INSERT INTO foo (bar) VALUES ('This is another test')");

但是当我尝试获取所有行时:

$result = $db->query('SELECT * FROM foo');
var_dump($result->fetchArray());

它只返回db中的第一行:

array(2) { [0]=> string(14) "This is a test" ["bar"]=> string(14) "This is a test" }

我不确定为什么它没有返回所有行。

3 个答案:

答案 0 :(得分:7)

您需要遍历行。你只会获得当前行。

while($row=$result->fetchArray()){
   // Do Something with $row
   print_r($row);
}

The PHP Manual在页面上有一个很好的例子

答案 1 :(得分:2)

fetchArray()仅获取第一行结果。如果要获取其他行,请对fetchArray进行其他调用(可能在循环中)。

答案 2 :(得分:0)

请求在一个数组中返回所有结果的答案。能够将所有结果放在一个对象中,将它们按数组条目拆分,然后将它们放回一个数组中似乎很浪费。