-2

我正在使用此 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循环所在的地方遇到错误

在非对象上调用成员函数 fetch()

请帮帮我,我是 php 和 sqlite 的新手

4

2 回答 2

4

你不能while使用PDO,你可以使用程序化方法

一些参考:参考链接

您可以使用$db->execfor 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'];
}
于 2012-12-10T11:30:29.483 回答
2

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

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

相反,您可以使用query()

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

foreach($result as $row)
{
    print_r($row);
}
于 2012-12-10T11:30:43.587 回答