Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana Menggunakan Tatasusunan dengan Penyata Disediakan MySQLi dalam Klausa `IN()`?

Bagaimana Menggunakan Tatasusunan dengan Penyata Disediakan MySQLi dalam Klausa `IN()`?

Linda Hamilton
Linda Hamiltonasal
2024-12-22 06:13:141023semak imbas

How to Use an Array with MySQLi Prepared Statements in an `IN()` Clause?

Cara Menggabungkan Array ke dalam Penyata Disediakan MySQLi untuk Pertanyaan 'IN()'

Apabila melaksanakan pertanyaan MySQL yang melibatkan penapisan rekod berdasarkan nilai dalam tatasusunan menggunakan sintaks WHERE ... IN(...), adalah disyorkan untuk menggunakan pernyataan yang disediakan untuk meningkatkan keselamatan dan prestasi. Walau bagaimanapun, menggunakan pernyataan yang disediakan seperti yang ditunjukkan dalam soalan memerlukan pengisihan manual keputusan.

Untuk menangani ini, penyelesaian yang lebih baik ialah menggunakan fungsi IN() terbina dalam MySQL dalam pernyataan yang disediakan. Ini membolehkan kami untuk memasukkan tatasusunan ID terus ke dalam pertanyaan.

$ids = array(1,5,18,25);

// Construct a comma-separated string of placeholders
$clause = implode(',', array_fill(0, count($ids), '?'));

// Prepare the statement with the IN() clause
$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;');

// Bind the array of IDs to the placeholders
call_user_func_array(array($stmt, 'bind_param'), $ids);
$stmt->execute();

// Iterate over the results

Dengan menggunakan pendekatan ini, fungsi bind_param dipanggil sekali dengan keseluruhan tatasusunan ID, dan MySQL secara automatik mengendalikan penapisan dan susunan keputusannya. Ini memberikan penyelesaian yang lebih cekap dan mantap berbanding dengan pengisihan manual.

Atas ialah kandungan terperinci Bagaimana Menggunakan Tatasusunan dengan Penyata Disediakan MySQLi dalam Klausa `IN()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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