[英]insert multiple rows in database using pdo's
insert into test (sometext) values ("?"),("?")
$a= array("weird' text","sdfa");
我想使用bind參數將文本插入到sometext列中的表測試中,並且我不想在循環中執行語句。 我無法以(“?”),(“?”)形式內嵌數組,因為查詢可能會崩潰,因為文本可以由引號組成。
那么,有沒有一種方法可以在one(1)execute語句中使用PDO來實現呢?
我無法以(“?”),(“?”)形式內嵌數組,因為查詢可能會崩潰,因為文本可以由引號組成。
准備好的語句在那里解決引號/轉義問題。
此語法是錯誤的1 :
insert into test (sometext) values ("?"),("?")
您不必用引號將參數引起來,而必須以這種形式編寫查詢:
INSERT INTO test (sometext) VALUES (?),(?)
然后,您可以使用implode()
而不用擔心引號:
$a = array( "weird' text", "sdfa" );
$query = "INSERT INTO test (sometext) VALUES (" . implode( "),(", array_fill( 0, count( $a ), "?" ) ) . ")";
$stmt = $db->prepare( $query );
$stmt->execute( $a );
或者,可以使用substr
和str_repeat
代替implode
:
$query = "INSERT INTO test (sometext) VALUES " . substr( str_repeat( "(?),", count( $a ) ), 0, -1 );
1使用insert into test (sometext) values ("?"),("?")
在字段中插入兩個問號。
$ stmt = $ conn-> prepare(“ INSERT INTO test(field1,field2,field3)VALUES(?,?,?)”);
$ stmt-> bind_param(“ sss”,$ field1,$ field2,$ field3);
//設置參數並執行
$ field1 =“測試”;
$ field2 =“ test2”;
$ field3 =“ test@test.cc”; $ stmt-> execute();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.