Apabila menggunakan PDO untuk mengikat tatasusunan nilai pada pernyataan MySQL IN, tingkah laku lalai adalah untuk menganggap nilai terikat sebagai rentetan tunggal, merangkumi semua elemen dalam tatasusunan dan bukannya individu yang dikehendaki pemegang tempat.
Terdapat pelbagai pendekatan untuk menangani isu ini:
1. Pembinaan Rentetan Terus:
* Construct the IN clause within the query string, directly including the values instead of binding them. This method avoids the binding issue but requires hard-coding the values in the query.
2. Fungsi find_in_set:
* Utilize the find_in_set function to search for values in a comma-separated string. Modify the query as follows: ``` SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE find_in_set(cast(products.id as char), :products) ``` Note that this approach may impact performance for large datasets.
3. Fungsi Ditakrifkan Pengguna:
* Create a user-defined function that splits the comma-separated values. This function can be used in the IN clause to convert the string to individual values.
Pendekatan terakhir ini disyorkan untuk pertanyaan yang kerap bergantung pada klausa IN, kerana ia menyediakan penyelesaian umum.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengikat Nilai Tatasusunan dengan Benar pada Penyata MySQL IN Menggunakan PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!