検索

ホームページ  >  に質問  >  本文

mysqliにバッチ挿入する最良の方法は?

<p>PHP と MySQLi を使用して一度に大量の行 (約 2000 行) を挿入する SQL インジェクションの安全な手法を探しています。 </p><p>含まれなければならないすべての値を含む配列があります。 現在、私はこれを行っています: </p> <pre class="brush:php;toolbar:false;"><?php $array = array("配列", "with", "約", "2000", "値"); foreach ($array を $one) { $query = "INSERT INTO テーブル (リンク) VALUES (?)"; $stmt = $mysqli->prepare($query); $stmt ->bind_param("s", $one); $stmt->execute(); $stmt->close(); } ?></pre> <p>call_user_func_array() を試してみましたが、スタック オーバーフローが発生しました。 </p> <p>SQL インジェクション (プリペアド ステートメントなど) やスタック オーバーフローを防ぎながら、これをより高速に行う方法 (すべてを一度に挿入するなど) は何ですか? </p>
P粉951914381P粉951914381447日前502

全員に返信(2)返信します

  • P粉530519234

    P粉5305192342023-08-25 15:20:13

    もう一度試してください。少し変更しただけで元のコードが機能しなくなる理由がわかりません:

    リーリー

    返事
    0
  • P粉340980243

    P粉3409802432023-08-25 00:31:22

    挿入をトランザクションに入れることで、処理を大幅に高速化できるはずです。 prepare ステートメントと binding ステートメントをループの外に移動することもできます。

    リーリー

    私はこのコードを Web サーバーで 10,000 回繰り返しテストしました。

    トランザクションなし: 226 秒。 トランザクション時間: 2 秒。 あるいは 少なくともこのテストでは 2 桁高速になります。

    返事
    0
  • キャンセル返事