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
Linda Hamiltonasal
2024-10-30 03:03:02553semak imbas

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>

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>

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!

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