プリペアドステートメントを使用する場合は、$JSON_data
をループできます。 foreachループを使用して配列し、INSERT
を実行します データのそのチャンクで。
プリペアドステートメントを使用すると、クエリを構築するオーバーヘッドが削減され、ループの各反復で新しいデータがデータベースに送信されるだけです。
$query = mysqli_prepare("INSERT INTO `MyTable` (`col1`,`col2`,`col3`)
VALUES(?,?,?)");
foreach($JSON_data as $key => $value) {
$query->bind_param('sss',$value["prop1"],$value["prop2"],$value["prop3"];
$query->execute();
}
bind_param()
の最初の引数に注意してください バインドする値の数と、各値のタイプを示します。
s
文字列データi
に対応します 整数データ、d
に対応します double(浮動小数点)に対応し、b
バイナリデータに対応します。
もう1つの注意点は、しないことです。 s
として任意の文字列データを引用します datatypeは、mysqlに文字列を予期するように指示します。 ?
を引用する場合 プリペアドステートメントでは、パラメータの数が間違っていることがわかります。文字列を引用すると、mysqlで引用されます。
編集:
同じパラダイム(1つのクエリで複数の行を挿入する)を使用する場合は、それを行う方法があります。 1つの方法は、bind_param
を集約するクラスを作成することです。 クエリを実行するときに、1つのbind_paramを呼び出して実行します。そのためのコードは、こちら
です。 。