Bagaimana untuk Melaksanakan Pertanyaan PDO dengan \'WHERE... IN\' Menggunakan Pemegang Tempat dan Parameter?

Susan Sarandon
Lepaskan: 2024-10-30 04:20:02
asal
758 orang telah melayarinya

How to Execute PDO Queries with

Pertanyaan PDO dengan "WHERE... IN"

Dalam usaha untuk meningkatkan akses pangkalan data dengan PDO, banyak pembangun menghadapi cabaran, terutamanya dengan "WHERE... IN" pertanyaan. Mari kita mendalami selok-belok dan temui pendekatan yang betul untuk menggunakan senarai item dalam pernyataan yang disediakan oleh PDO.

Teka-teki "WHERE... IN"

Pertimbangkan senario di mana anda perlu padam item daripada pangkalan data berdasarkan senarai item yang disemak daripada borang. Setiap item mempunyai ID yang sepadan, yang biasanya akan disimpan dalam tatasusunan. Pertanyaan "WHERE... IN" konvensional akan kelihatan seperti ini:

$query = "DELETE FROM `foo` WHERE `id` IN (:idlist)";
$st = $db->prepare($query);
$st->execute(array(':idlist' => $idlist));
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini selalunya menyebabkan hanya ID pertama dipadamkan. Ini kerana PDO mentafsir senarai yang dipisahkan koma sebagai satu nilai, oleh itu mengabaikan ID berikutnya.

Merangkul Pemegang Tempat dan Parameter

Untuk memintas isu ini, seseorang mesti memanfaatkan ruang letak dan mengikat parameter. Pendekatan ini melibatkan menggantikan keseluruhan senarai yang dipisahkan koma dengan pemegang tempat individu (tanda soal) dan menggelung melalui tatasusunan untuk mengikat setiap ID kepada pemegang tempat. Begini cara anda mencapai matlamat ini:

$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(1, $id);
}
Salin selepas log masuk

Pendekatan yang disemak ini memastikan setiap ID dianggap sebagai parameter yang berasingan, dengan itu membolehkan pelaksanaan pertanyaan yang tepat.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan PDO dengan \'WHERE... IN\' Menggunakan Pemegang Tempat dan Parameter?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!