Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Pertanyaan \"WHERE... IN\" dengan Berbilang ID dalam PDO dengan betul?

Bagaimana untuk Melaksanakan Pertanyaan \"WHERE... IN\" dengan Berbilang ID dalam PDO dengan betul?

DDD
DDDasal
2024-10-30 08:03:02282semak imbas

How to Properly Execute

Sintaks PDO yang betul untuk Pertanyaan "WHERE... IN" dengan Berbilang ID

Apabila memadamkan rekod pangkalan data berdasarkan senarai ID, mengekalkan integriti data adalah penting. Satu cabaran biasa yang dihadapi dengan PDO ialah melaksanakan pertanyaan "WHERE... IN" dengan berbilang nilai.

Dalam kes anda, pertanyaan itu gagal memadamkan semua kecuali ID pertama kerana ia menganggap senarai yang dipisahkan koma sebagai nilai tunggal. Untuk menyelesaikan masalah ini, anda perlu memasukkan pemegang tempat bagi setiap ID dalam senarai.

Penyelesaian:

Untuk menggunakan senarai ID dengan betul dalam pernyataan yang disediakan PDO, ikut langkah berikut:

  1. Tukar senarai ID yang dipisahkan koma kepada tatasusunan, cth., $idlist = ['260', '201', '221', ...];.
  2. Buat rentetan tanda soal yang mewakili bilangan ruang letak yang diperlukan, cth., $tanda tanya = str_repeat("?,", count($idlist)-1) . "?";. Ini akan menghasilkan rentetan seperti "?,,,,,,,,," untuk 10 ID.
  3. Sediakan pernyataan PDO dengan rentetan tanda soal, cth., $stmt = $dbh->prepare( "DELETE FROM foo WHERE id IN ($questionmarks)");.
  4. Akhir sekali, gelung melalui tatasusunan ID dan ikat setiap nilai pada pemegang tempat yang sepadan, cth.,

    <code class="php">foreach ($idlist as $id) {
     $stmt->bindParam(..., $id);
    }</code>

Dengan mengikut langkah ini, anda boleh melaksanakan pertanyaan "WHERE... IN" dengan berbilang ID dengan tepat dan mengekalkan ketekalan data.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan \"WHERE... IN\" dengan Berbilang ID dalam PDO dengan betul?. 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