Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Menggunakan Pernyataan Disediakan dengan Cekap dengan Penapis Tatasusunan dalam Klausa `WHERE ... IN()` MySQL?

Bagaimanakah Saya Boleh Menggunakan Pernyataan Disediakan dengan Cekap dengan Penapis Tatasusunan dalam Klausa `WHERE ... IN()` MySQL?

Mary-Kate Olsen
Lepaskan: 2024-12-16 16:33:11
asal
757 orang telah melayarinya

How Can I Efficiently Use Prepared Statements with Array Filters in MySQL's `WHERE ... IN()` Clause?

Pernyataan Disediakan dengan Penapis Tatasusunan: Pertanyaan 'WHERE .. IN(..)'

Masalah

Pertimbangkan pertanyaan berikut yang mendapatkan semula baris berdasarkan pada ID tertentu:

SELECT * FROM somewhere WHERE `id` IN(1,5,18,25) ORDER BY `name`;
Salin selepas log masuk

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.

Penyelesaian

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan