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
Lepaskan: 2024-12-22 02:37:14
asal
893 orang telah melayarinya

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) . '?';
Salin selepas log masuk

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)");
Salin selepas log masuk

Laksanakan pertanyaan dan hantar tatasusunan sebagai argumen:

$stmt->execute($ids);
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

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