Ikat Nilai LIKE dengan Sambungan PDO
Dalam pertanyaan pangkalan data menggunakan operator LIKE, adalah penting untuk mengikat nilai dengan betul untuk mengelakkan serangan suntikan SQL. Apabila berurusan dengan pertanyaan LIKE yang melibatkan aksara kad bebas (% atau _) pada akhirnya, memahami teknik pengikatan yang sesuai adalah penting.
Mari kita pertimbangkan contoh pertanyaan:
select wrd from tablename WHERE wrd LIKE '$partial%'
Di sini, kami mahu untuk mengikat pembolehubah $partial menggunakan PDO. Cara yang betul untuk melakukan ini ialah:
select wrd from tablename WHERE wrd LIKE :partial
di mana :partial terikat kepada $partial dengan nilai "somet%" (dengan kad bebas mengekor). Ini memastikan pertanyaan mencari perkataan yang sepadan dengan sesetengahnya diikuti oleh sebarang bilangan aksara.
Sebagai alternatif, anda boleh menggunakan:
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
untuk melaksanakan penggabungan kad bebas dalam MySQL dan bukannya pernyataan PDO .
Walau bagaimanapun, jika perkataan separa yang anda cari mungkin sendiri mengandungi aksara kad bebas (% atau _) atau garis miring ke belakang, mekanisme melarikan diri tambahan mungkin diperlukan dalam penyediaan PDO dan pengikatan parameter.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Nilai dengan Baik dengan Operator LIKE dalam PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!