Несколько запросов INSERT с использованием PDO и SQLite - PullRequest
1 голос
/ 16 декабря 2010

У меня есть этот 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 () для необъекта

Я также пытался создать SQL-запрос, например 'VALUES (..., ...), VALUES (..., ...), ..., но получил ту же ошибку:

Что я делаю не так?

1 Ответ

2 голосов
/ 16 декабря 2010

SQLite не поддерживает синтаксис VALUES (...), (...), (...) (см. документы ).Таким образом, вам нужно сделать только одну строку для INSERT запроса ...

Причина самой ошибки в том, что, поскольку есть ошибка запроса, PDO::prepare() возвращает false .Вы должны проверить это, чтобы убедиться, что ->prepare() вызов работает:

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

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

$insert->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...