sql >> データベース >  >> RDS >> Mysql

PHPを介したMySQL一括挿入

    プリペアドステートメントを使用する場合は、$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を呼び出して実行します。そのためのコードは、こちら です。 。



    1. Oracle(Old?)Joins-変換用のツール/スクリプト?

    2. データベースメールアカウント(SSMS)を削除する

    3. OracleのCheckステートメントでのサブクエリの使用

    4. MySQLの日付比較