Parameter Mengikat untuk Klausa WHERE IN dengan PDO
Apabila menggunakan PDO untuk melaksanakan pertanyaan dengan klausa WHERE IN, pengikatan parameter mungkin tidak berfungsi seperti yang dijangka. Seperti yang ditunjukkan dalam coretan kod yang disediakan, mengikat senarai nilai yang dipisahkan koma pada parameter :ids menghasilkan kiraan 1, walaupun terdapat berbilang nilai dalam tatasusunan.
Penjelasan
Isunya terletak pada cara klausa IN menjangkakan nilai akan diformatkan. Apabila mengikat tatasusunan, PHP menggabungkan semua elemen ke dalam satu rentetan, yang dianggap sebagai satu parameter oleh pangkalan data. Ini menyebabkan pertanyaan berikut dilaksanakan:
SELECT foo FROM bar WHERE ids IN ('1,2,3')
Walau bagaimanapun, klausa IN memerlukan setiap nilai untuk menjadi parameter individu:
SELECT foo FROM bar WHERE ids IN (1, 2, 3)
Penyelesaian
Untuk menyelesaikan masalah ini, seseorang mesti memasukkan senarai IN secara manual ke dalam pertanyaan rentetan:
'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'
Sebagai alternatif, seseorang boleh menggunakan kaedah bindParam untuk mengikat nilai individu dan bukannya tatasusunan.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Parameter dengan Betul untuk Klausa WHERE IN dengan PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!