Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Pertanyaan PDO dengan \"WHERE... IN\" Menggunakan Pemegang Tempat dan Parameter?

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

Susan Sarandon
Susan Sarandonasal
2024-10-30 04:20:02759semak imbas

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));

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);
}

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!

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