Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Menggunakan Penyata Disediakan dalam MySQL dengan PHP untuk Pertanyaan dengan Senarai ID Bersaiz Pembolehubah?

Bagaimanakah Saya Boleh Menggunakan Penyata Disediakan dalam MySQL dengan PHP untuk Pertanyaan dengan Senarai ID Bersaiz Pembolehubah?

DDD
Lepaskan: 2024-12-06 20:05:14
asal
507 orang telah melayarinya

How Can I Use Prepared Statements in MySQL with PHP for Queries with Variable-Sized Lists of IDs?

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan