Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengikat Tatasusunan kepada Klausa IN() dalam PDO?

Bagaimanakah Saya Boleh Mengikat Tatasusunan kepada Klausa IN() dalam PDO?

Patricia Arquette
Patricia Arquetteasal
2024-12-22 02:37:14873semak imbas

How Can I Bind an Array to an IN() Clause in PDO?

Mengikat Tatasusunan kepada Keadaan IN() dalam Pertanyaan PDO

Gambaran Keseluruhan

PDO (Objek Data PHP) PHP menyediakan mekanisme untuk mengikat pemegang tempat dalam pertanyaan kepada nilai dalam tatasusunan. Walau bagaimanapun, ia secara asli tidak menyokong pengikatan tatasusunan nilai kepada keadaan IN().

Membina Rentetan Pemegang Tempat

Sebagai penyelesaian, anda boleh membina rentetan ruang letak secara manual dengan mengulangi tatasusunan dan penyambung ruang letak dengan koma.

$ids = [1, 2, 3, 7, 8, 9];
$in = str_repeat('?,', count($ids) - 1) . '?';

Pembolehubah $in akan mengandungi rentetan seperti "?,?,?,?,?,?".

Menyedia dan Melaksanakan Pertanyaan

Sediakan pertanyaan menggunakan rentetan pemegang tempat:

$stmt = $db->prepare("SELECT * FROM table WHERE id IN($in)");

Laksanakan pertanyaan dan hantar tatasusunan sebagai argumen:

$stmt->execute($ids);

Pendekatan Alternatif: Dinamakan Pemegang tempat

Untuk pemegang tempat yang dinamakan, seperti :id0, :id1, :id2, dsb., anda perlu membuat jujukan ruang letak secara manual dan mengumpulkan nilai ke dalam tatasusunan bersekutu.

$i = 0;
$in_params = [];
foreach ($ids as $item) {
    $key = ":id" . $i++;
    $in_params[$key] = $item;
    $in .= ($in ? ',' : '') . $key;
}

Kesimpulan

Walaupun PDO tidak membenarkan secara eksplisit mengikat tatasusunan kepada keadaan IN(), anda boleh meniru fungsi dengan membina rentetan ruang letak secara manual atau menggunakan ruang letak bernama dengan tatasusunan bersekutu. Pendekatan ini menyediakan cara yang mudah untuk mengendalikan tatasusunan dalam keadaan IN() dalam pertanyaan PDO.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengikat Tatasusunan kepada Klausa IN() dalam 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