Pernyataan Disediakan untuk Senarai Pembolehubah Bersaiz Pembolehubah dalam MySQL dengan PHP
Banyak operasi pangkalan data memerlukan keupayaan untuk membuat pertanyaan dengan bilangan argumen yang berubah-ubah . Contohnya, dalam pangkalan data orang, pertanyaan mungkin memilih rekod di mana ID berada dalam senarai tertentu. Walau bagaimanapun, bilangan ID dalam senarai boleh berbeza-beza.
Terdapat beberapa kemungkinan penyelesaian untuk masalah ini.
Penyelesaian 1: Nilai Dummy
Satu pendekatan melibatkan mencipta pernyataan yang menerima bilangan pembolehubah tetap dan mengisi yang selebihnya dengan nilai tiruan yang dijamin tidak berada dalam meja. Walau bagaimanapun, strategi ini mungkin tidak cekap untuk senarai dengan sejumlah besar nilai tiruan.
Penyelesaian 2: Membina Pertanyaan Dinamik
Pilihan lain ialah mengelak daripada menggunakan pernyataan yang disediakan dan sebaliknya membina rentetan pertanyaan secara dinamik, menyemak dengan teliti kemungkinan serangan suntikan. Pendekatan ini memerlukan kewaspadaan untuk memastikan pertanyaan yang terhasil adalah selamat dan bebas daripada eksploitasi.
Penyelesaian Cekap
Untuk pengendalian senarai pembolehubah bersaiz berubah yang lebih cekap:
Penyelesaian dengan Jadual Sementara:
Buat jadual sementara untuk memasukkan setiap ID ke dalam dan kemudian melakukan gabungan terhadapnya dalam pertanyaan.
Penyelesaian dengan Penyediaan Pernyataan Dinamik:
Gunakan fungsi sprintf untuk mencipta secara dinamik penyata yang disediakan dengan bilangan ruang letak yang sesuai, kemudian laksanakannya dengan parameter yang disediakan:
$dbh=new PDO($dbConnect, $dbUser, $dbPass); $parms=array(12, 45, 65, 33); $st=$dbh->prepare(sprintf( 'SELECT age, name FROM people WHERE id IN (%s)', implode(',',array_fill(0,count($parms),'?')) )); $st->execute($parms);
Ini teknik menyediakan kecekapan pernyataan yang disediakan sambil menampung bilangan hujah yang berubah-ubah. Pilihan antara jadual sementara dan penyelesaian penyediaan pernyataan dinamik bergantung pada saiz senarai, dengan yang kedua lebih sesuai untuk senarai yang lebih kecil.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Penyata Disediakan dalam MySQL dengan PHP untuk Pertanyaan dengan Senarai ID Bersaiz Pembolehubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!