當使用預處理語句在PHP中向SQLite3插入多行時,如果未綁定行的參數,則前一行的值將會即使您「清除」了各行之間的聲明,也可以插入。在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