如何从sqlite db获取行?

时间:2012-12-10 11:25:51

标签: php sqlite

我正在使用这个PHP代码来获取行,但它正在收到错误

$db = new PDO('sqlite:db/logs');

$result = $db->exec("SELECT * FROM users");

while($row = $result->fetch(SQLITE_ASSOC))
{

}

我正在使用sqlite3和php5,我想知道

  1. 我是否使用正确的代码连接到数据库我还使用了sqlite.open()但是它也出错了?

  2. new PDO('sqlite:db/logs')与数据库连接,但为什么每次都会创建新数据库

  3. 我的主要问题是我遇到错误,其中while循环是

  4.   

    在非对象

    上调用成员函数fetch()

    请帮我解决这个问题我是php和sqlite的新手

2 个答案:

答案 0 :(得分:4)

您无法使用 PDO while,您可以使用程序方法来使用它。

一些参考:REFERENCE LINK

您可以将$db->exec用于insert& update查询。不是在你想要获取记录的时候。

尝试以下更改。

$db = new PDO('sqlite:db/logs');
//connection code here
$result = $db->query("SELECT * FROM users"); //replace exec with query

foreach($result as $row){
    $row['field1'];
    $row['field2'];
}

答案 1 :(得分:2)

PDO::exec()返回的行数不是您可以获取的对象。

  

PDO :: exec()返回由您发出的SQL语句修改或删除的行数。如果没有行受到影响,PDO :: exec()将返回0.

相反,您可以使用query()

$result = $db->query('SELECT * FROM users');

foreach($result as $row)
{
    print_r($row);
}