使用PDO&的多个INSERT查询SQLite的

时间:2010-12-16 19:11:42

标签: php database sqlite

我有这个sqlite3 db:

CREATE TABLE links (
 id INTEGER PRIMARY KEY AUTOINCREMENT,
 name TEXT UNIQUE,
 link1 TEXT,
 link2 TEXT,
 link3 TEXT
);

我试图在同一个查询中插入多个条目,这是我的代码:

$db = new PDO('sqlite:db.sqlite');

$sql = "INSERT INTO links VALUES";

$filelines = file('filename');

foreach($filelines as $key => $line)
{
 if(count($filelines)-1==$key)
  $sql .= "(NULL, '".trim($line)."', '', '', '');";
 else
  $sql .= "(NULL, '".trim($line)."', '', '', ''),";
}

$insert = $db->prepare($sql);

$insert->execute();

单个插入工作正常,但使用此代码我得到php错误:

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

我也尝试过创建像'VALUES(...,...),VALUES(...,...)这样的SQL查询,但是得到了同样的错误:

我做错了什么?

1 个答案:

答案 0 :(得分:2)

SQLite不支持VALUES (...), (...), (...)语法(请参阅the docs)。因此,每INSERT次查询只需要执行一行...

错误本身的原因是,由于存在查询错误,PDO::prepare() returns false。您应该检查它以确保->prepare()调用有效:

$insert = $db->prepare($sql);

if (!$insert) {
    die($db->errorInfo());
    // Or you could throw an exception, or otherwise handle the error...
}

$insert->execute();