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

CodeIgniterフレームワークを使用して配列から複数の行を挿入するにはどうすればよいですか?

    1つのINSERTをアセンブルします MySQLでは、複数行のステートメントは1つのINSERTよりもはるかに高速です。 行ごとのステートメント。

    そうは言っても、PHPで文字列処理の問題が発生しているように思われます。これは実際にはアルゴリズムの問​​題であり、言語の問題ではありません。基本的に、大きな文字列を操作するときは、不要なコピーを最小限に抑える必要があります。主に、これは連結を避けたいことを意味します。一度に数百行を挿入する場合など、大きな文字列を作成するための最も高速でメモリ効率の高い方法は、implode()を利用することです。 関数と配列の割り当て。

    $sql = array(); 
    foreach( $data as $row ) {
        $sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
    }
    mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));
    

    このアプローチの利点は、これまでに各連結でアセンブルしたSQLステートメントをコピーおよび再コピーしないことです。代わりに、PHPはこれを一度実行します implode()で 声明。これは大きい 勝ちます。

    まとめる列がたくさんあり、1つ以上の列が非常に長い場合は、同じことを行うための内部ループを作成して、implode()を使用することもできます。 値句を外部配列に割り当てます。



    1. MySQLとMariaDBでテーブルを一覧表示する方法

    2. LOAD DATA INFILEはYYYYMMDDをYYYY-MM-DDに簡単に変換しますか?

    3. 新しいMicrosoftSSMAバージョン7.8を使用する際に避けるべき落とし穴

    4. エイリアス列SQLの結合