При вставке нескольких строк в SQLite3 в PHP с помощью подготовленного оператора, если вы не привязываете параметр для строки, тогда значение из предыдущей строки будет быть вставлен, даже если вы «очистите» утверждение между строками.Устранение привязок в выражении SQLite3 не работает (PHP)
Посмотрите на следующий пример:
$db = new SQLite3('dogsDb.sqlite');
//create the database
$db->exec("CREATE TABLE Dogs (Id INTEGER PRIMARY KEY, Breed TEXT, Name TEXT, Age INTEGER)");
$sth = $db->prepare("INSERT INTO Dogs (Breed, Name, Age) VALUES (:breed,:name,:age)");
$sth->bindValue(':breed', 'canis', SQLITE3_TEXT);
$sth->bindValue(':name', 'jack', SQLITE3_TEXT);
$sth->bindValue(':age', 7, SQLITE3_INTEGER);
$sth->execute();
$sth->clear(); //this is supposed to clear bindings!
$sth->reset();
$sth->bindValue(':breed', 'russel', SQLITE3_TEXT);
$sth->bindValue(':age', 3, SQLITE3_INTEGER);
$sth->execute();
Хотя я бы ожидать вторую линию, чтобы иметь значение NULL для столбца «имя», значение «джек» вместо этого!
Таким образом, либо «очистить» не работает (хотя он возвращает true), либо я не совсем понял, что он должен делать.
Как я могу удалить привязки между вставками в SQLite3 (или даже PDO)? Каков наилучший способ вставки нескольких строк, где некоторые строки могут иметь нулевые значения для некоторых полей?
Это только что подтвердил, как PHP ошибка, смотрите здесь: [https://bugs.php.net/bug.php?id=70628](https://bugs.php.net/bug. php? id = 70628) – symos