PDO menyediakan cara selamat untuk melaksanakan pertanyaan SQL dengan parameter terikat, menghalang kerentanan suntikan SQL. Apabila mengikat parameter LIKE yang termasuk aksara kad bebas seperti %, anda mungkin menghadapi kekeliruan.
Dalam pertanyaan di bawah, kami cuba mengikat pembolehubah $partial% menggunakan PDO:
select wrd from tablename WHERE wrd LIKE '$partial%'
Adalah penting untuk memahami cara PDO mengendalikan pengikatan sedemikian. Pendekatan yang betul bergantung pada keperluan khusus anda.
Ya, ini ialah pilihan yang sah:
select wrd from tablename WHERE wrd LIKE ':partial%'
di mana :partial terikat kepada $partial="somet".
Anda juga boleh menggunakan pendekatan ini:
select wrd from tablename WHERE wrd LIKE ':partial'
di mana :partial terikat kepada $partial="somet%".
Jika anda mahu, anda boleh melakukan penggabungan rentetan dalam pertanyaan MySQL sendiri:
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
Jika perkataan separa anda mengandungi aksara khas seperti %, _ atau , anda perlu melepaskannya secara manual sebelum mengikat parameter. Kod berikut menunjukkan ini:
$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'"); $escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var); $stmt->bindParam(':term', $escaped);
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Parameter SUKA dengan Selamat dengan Kad Liar dalam PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!