Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Memadam Rekod dengan Berkesan dengan Klausa \'WHERE... IN\' dalam Pertanyaan PDO?

Bagaimana untuk Memadam Rekod dengan Berkesan dengan Klausa \'WHERE... IN\' dalam Pertanyaan PDO?

Linda Hamilton
Lepaskan: 2024-10-30 03:03:02
asal
519 orang telah melayarinya

How to Effectively Delete Records with

Pertanyaan PDO dengan Klausa "WHERE... IN"

Apabila bekerja dengan PDO PHP untuk akses pangkalan data, membina "WHERE... Pertanyaan IN" boleh mencabar. Dalam kes ini, matlamatnya ialah untuk memadamkan rekod daripada jadual berdasarkan senarai ID yang diperoleh daripada borang.

Pertanyaan Asal

<code class="php">$query = "DELETE from `foo` WHERE `id` IN (:idlist)";
$st = $db->prepare($query);
$st->execute(array(':idlist' => $idlist));</code>
Salin selepas log masuk

Masalah

Pertanyaan ini hanya memadamkan ID pertama dalam senarai, membuang baki ID kerana pemisah koma.

Penyelesaian Menggunakan Tanda Soalan

Memandangkan pernyataan yang disediakan tidak boleh mencampurkan nilai dengan logik aliran kawalan (koma), adalah perlu untuk menggunakan satu pemegang tempat bagi setiap nilai dalam senarai. Ini dicapai dengan mencipta rentetan tanda soal yang dipisahkan koma dan mengikat ID individu kepada mereka.

<code class="php">$idlist = array('260','201','221','216','217','169','210','212','213');

$questionmarks = str_repeat("?,", count($idlist)-1) . "?";

$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");

foreach ($idlist as $id) {
    $stmt->bindParam($id);
}</code>
Salin selepas log masuk

Pendekatan ini memerlukan gelung melalui senarai untuk mengikat setiap ID secara berurutan, memastikan semua rekod dipadamkan sebagai dimaksudkan.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod dengan Berkesan dengan Klausa \'WHERE... IN\' dalam Pertanyaan PDO?. 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