Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengikat Tatasusunan kepada Klausa IN() dalam PDO?
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().
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 "?,?,?,?,?,?".
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);
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; }
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!