Pertimbangkan pertanyaan berikut yang mendapatkan semula baris berdasarkan pada ID tertentu:
SELECT * FROM somewhere WHERE `id` IN(1,5,18,25) ORDER BY `name`;
Diberikan pelbagai ID ($id) untuk diambil, adalah disyorkan untuk menggunakan pernyataan yang disediakan untuk kecekapan. Walau bagaimanapun, menggunakan gelung untuk mengulang tatasusunan dan mengikat setiap ID secara berasingan memerlukan pengisihan hasil manual berikutnya.
Untuk memudahkan proses ini dan mengekalkan susunan MySQL, pendekatan alternatif wujud:
$ids = array(1,5,18,25); // Construct a placeholder string containing ?,?,? etc. $clause = implode(',', array_fill(0, count($ids), '?')); $stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;'); // Bind all IDs to the placeholder string using call_user_func_array call_user_func_array(array($stmt, 'bind_param'), $ids); $stmt->execute(); // Iterate over the results
Kaedah ini mengikat semua ID pada rentetan pemegang tempat dalam satu panggilan, membolehkan MySQL melakukan penapisan dan pengisihan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pernyataan Disediakan dengan Cekap dengan Penapis Tatasusunan dalam Klausa `WHERE ... IN()` MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!