2016-04-12 43 views
0
insert into test (sometext) values ("?"),("?") 
$a= array("weird' text","sdfa"); 

バインドパラメータとを使用して列sometextのテーブルテストにテキストを挿入したいループ内で実行文を使用しません。私はテキストをクォートで構成することができるので、( "?")、( "?")の形式で配列を爆破することはできません。pdoのを使用してデータベースに複数行を挿入

これは、1つの実行文で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); 

別の方法として、あなたの代わりにimplodesubstrstr_repeatを使用することができます。

insert into test (sometext) values ("?"),("?")を使用して
$query = "INSERT INTO test (sometext) VALUES " . substr(str_repeat("(?),", count($a)), 0, -1); 

あなたは文字通りあなたのフィールドに2つの疑問符を挿入します。

0

$ stmt = $ conn-> prepare( "INSERT INTO test(field1、field2、field3)VALUES(?、?、?)");

$ stmt-> bind_param( "sss"、$ field1、$ field2、$ field3);

//セットパラメータと

$フィールド1 = "test" を実行します。

$ field2 = "test2";

$ field3 = "[email protected]"; $ stmt-> execute();

関連する問題