Menggunakan Tatasusunan dalam Penyata Disediakan MySQL untuk WHERE ... IN(...) Pertanyaan
Apabila membuat pertanyaan pangkalan data menggunakan pernyataan yang disediakan, adalah disyorkan untuk menyediakan satu kenyataan dan melaksanakannya beberapa kali untuk meningkatkan prestasi. Walau bagaimanapun, apabila berurusan dengan pelbagai ID untuk pertanyaan WHERE ... IN(...), menyusun keputusan secara manual selepas pelaksanaan boleh menjadi tidak cekap.
Pendekatan alternatif ialah menggunakan teknik yang melibatkan penciptaan senarai ruang letak yang dipisahkan koma (?) berdasarkan panjang tatasusunan. Pertimbangkan contoh berikut:
$ids = array(1,5,18,25); // Create a string containing ?,?,? $clause = implode(',', array_fill(0, count($ids), '?')); $stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;'); call_user_func_array(array($stmt, 'bind_param'), $ids); $stmt->execute(); // Loop through results
Dalam pendekatan ini, implode(...) mencipta rentetan dengan bilangan ruang letak yang diperlukan. Fungsi call_user_func_array(...) kemudian mengikat nilai daripada tatasusunan $ids kepada ruang letak. Dengan menggunakan teknik ini, anda boleh mengisih hasil menggunakan fungsi pengisihan terbina dalam MySQL, menghapuskan keperluan untuk pengisihan manual.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Tatasusunan dengan Cekap dengan Penyata Disediakan MySQL dalam Klausa WHERE ... IN()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!