Rumah >pangkalan data >tutorial mysql >Mengapa Penyata MySQLi Saya Disediakan dengan Operator IN Tidak Mengembalikan Keputusan?

Mengapa Penyata MySQLi Saya Disediakan dengan Operator IN Tidak Mengembalikan Keputusan?

Linda Hamilton
Linda Hamiltonasal
2024-12-30 13:31:12352semak imbas

Why Are My MySQLi Prepared Statements with the IN Operator Returning No Results?

MySQLi Disediakan Penyata dengan Operator IN

Pembangun kerap menghadapi keperluan untuk menanyakan pangkalan data menggunakan operator IN untuk mendapatkan semula baris tertentu berdasarkan satu set nilai. Walaupun menggunakan pernyataan yang disediakan ialah amalan yang disyorkan untuk mencegah suntikan SQL, sesetengah pengguna telah melaporkan menghadapi kesukaran apabila cuba menggunakan pernyataan yang disediakan dengan pengendali IN. Artikel ini menyelidiki kes khusus di mana pengambilan data menggunakan pernyataan yang disediakan dan operator IN tidak mengembalikan hasil, walaupun terdapat data yang dikehendaki dalam pangkalan data.

Dalam contoh yang diberikan, pembangun telah menyediakan kenyataan bahawa cuba memilih baris daripada jadual 'pengguna' yang lajur 'nama keluarga' sepadan dengan satu set nilai yang disediakan dalam tatasusunan. Proses penyediaan melibatkan mengikat rentetan yang mengandungi nilai dipisahkan koma pada pernyataan yang disediakan. Walau bagaimanapun, pertanyaan itu mengembalikan set hasil kosong, walaupun nilai itu wujud dalam pangkalan data.

Setelah penyiasatan lanjut, pembangun mendapati bahawa isu itu terletak mengikut cara parameter terikat pada pernyataan yang disediakan. Kod ini pada asalnya menghantar rentetan yang mengandungi nilai yang dipisahkan koma secara langsung, yang mengakibatkan MySQL menganggap keseluruhan rentetan sebagai satu nilai dan bukannya satu set nilai.

Penyelesaian melibatkan menghantar tatasusunan rujukan kepada setiap satu nilai dalam tatasusunan 'nama akhir', bersama-sama dengan rentetan yang menyatakan jenis setiap nilai. Dengan berbuat demikian, MySQL dengan betul mengenali dan mengikat setiap nilai secara individu. Ini membolehkan pengendali IN berfungsi seperti yang dimaksudkan, menghasilkan kejayaan mendapatkan semula baris yang diingini.

Walaupun penyelesaian ini mungkin bukan yang paling elegan atau ringkas, ia menangani isu ini dengan berkesan dan menunjukkan kepentingan mengikat dengan betul parameter apabila menggunakan pernyataan yang disediakan dengan operator IN.

Atas ialah kandungan terperinci Mengapa Penyata MySQLi Saya Disediakan dengan Operator IN Tidak Mengembalikan Keputusan?. 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