Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengikat Parameter dengan Betul untuk Klausa WHERE IN dengan PDO?

Bagaimana untuk Mengikat Parameter dengan Betul untuk Klausa WHERE IN dengan PDO?

DDD
Lepaskan: 2024-11-17 13:38:02
asal
868 orang telah melayarinya

How to Properly Bind Parameters for a WHERE IN Clause with PDO?

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

Walau bagaimanapun, klausa IN memerlukan setiap nilai untuk menjadi parameter individu:

SELECT foo FROM bar WHERE ids IN (1, 2, 3)
Salin selepas log masuk

Penyelesaian

Untuk menyelesaikan masalah ini, seseorang mesti memasukkan senarai IN secara manual ke dalam pertanyaan rentetan:

'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan