Mengikat Nilai LIKE dengan Sambungan PDO
Apabila bekerja dengan pertanyaan LIKE, adalah penting untuk mempertimbangkan cara mengikat nilai pembolehubah menggunakan sambungan PDO . Watak kad bebas '%', apabila diletakkan pada penghujung rentetan carian, boleh memberikan beberapa cabaran.
Dalam pertanyaan yang disediakan:
select wrd from tablename WHERE wrd LIKE '$partial%'
Persoalan timbul mengenai cara mengikat Pembolehubah ${partial} dengan PDO. Perlu mempertimbangkan tiga pilihan:
Pilihan 1: Ikat dengan '%' pada penghujung
select wrd from tablename WHERE wrd LIKE ':partial%'
Dalam pilihan ini, parameter :separa terikat pada nilai $partial="somet", mengekalkan '%' pada penghujungnya.
Pilihan 2: Ikat tanpa '%' pada penghujung
select wrd from tablename WHERE wrd LIKE ':partial'
Dalam pilihan ini, :partial terikat kepada $partial="somet%", dengan berkesan mempunyai '%' tetap pada penghujung rentetan carian.
Pilihan 3: Gunakan CONCAT MySQL fungsi
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
Pilihan ini membenarkan penyatuan istilah carian dan '%' dilakukan dalam MySQL sendiri.
Selain itu, jika istilah carian yang anda cari mungkin mengandungi aksara dengan makna istimewa dalam operator LIKE, seperti '%', '_' atau '', pendekatan yang lebih kompleks menggunakan melarikan diri rentetan diperlukan:
$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 Nilai LIKE dengan Sambungan PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!