Saya sedang mencari teknik selamat suntikan SQL untuk memasukkan sejumlah besar baris (~2000 baris) sekali gus menggunakan PHP dan MySQLi.
Saya mempunyai tatasusunan yang mengandungi semua nilai yang mesti terkandung di dalamnya. Pada masa ini saya melakukan ini:
<?php $array = array("array", "with", "about", "2000", "values"); foreach ($array as $one) { $query = "INSERT INTO table (link) VALUES ( ?)"; $stmt = $mysqli->prepare($query); $stmt ->bind_param("s", $one); $stmt->execute(); $stmt->close(); } ?>
Saya cuba call_user_func_array() tetapi ia mengakibatkan limpahan tindanan.
Apakah cara yang lebih pantas untuk melakukan ini (seperti memasukkan kesemuanya sekali gus?) tetapi masih menghalang suntikan SQL (seperti pernyataan yang disediakan) dan limpahan tindanan?
Cuba lagi, saya tidak faham mengapa kod asal anda tidak berfungsi selepas sedikit pengubahsuaian:
Dengan memasukkan sisipan anda ke dalam transaksi, anda seharusnya dapat meningkatkan kelajuan dengan ketara. Anda juga boleh mengalihkan penyata sediakan dan ikat di luar gelung.
Saya telah menguji kod ini pada pelayan web saya untuk 10,000 lelaran.
Tiada urusan:
226 秒。
Waktu dagangan:2 秒。
Atau速度提高两个数量级
, sekurang-kurangnya untuk ujian ini.