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
DDDasal
2024-11-17 13:38:02869semak imbas

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')

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!

Kenyataan:
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