簡體   English   中英

使用pdo在數據庫中插入多行

[英]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 );

或者,可以使用substrstr_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM