Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengikat Nilai LIKE dengan PDO dengan Selamat dalam Pertanyaan SQL?

Bagaimana untuk Mengikat Nilai LIKE dengan PDO dengan Selamat dalam Pertanyaan SQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 12:50:10204semak imbas

How to Safely Bind LIKE Values with PDO in SQL Queries?

Mengikat Nilai LIKE dengan PDO

Apabila cuba untuk mengikat nilai LIKE menggunakan sambungan PDO, adalah penting untuk mempertimbangkan bagaimana % watak kad bebas dikendalikan.

Dalam contoh yang disediakan:

select wrd from tablename WHERE wrd LIKE '$partial%'

Ada adalah beberapa cara untuk mendekati pengikatan:

  • pilih wrd daripada nama jadual WHERE wrd LIKE ':partial%':
    Ini akan mengikat :partial kepada $partial="somet", dan pertanyaan akan cari perkataan yang berakhir dengan "somet."
  • pilih wrd daripada tablename WHERE wrd LIKE ':partial':
    This akan mengikat :partial kepada $partial="somet%", termasuk % dalam nilai terikat. Pertanyaan tidak akan menemui sebarang hasil kerana rentetan separa tidak berakhir dengan %.
  • PILIH wrd DARI nama jadual WHERE wrd LIKE CONCAT(:partial, '%'):
    Pilihan ini menggabungkan nilai terikat dengan % di penghujung MySQL, mengendalikan aksara kad bebas dengan berkesan.

Dalam kes kompleks di mana rentetan separa mungkin mengandungi aksara khas (% atau _), pelarian tambahan mungkin diperlukan:

$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var);
$stmt->bindParam(':term', $escaped);

Pendekatan ini menggantikan kejadian , % dan _ dalam nilai terikat dengan versi yang dilepaskan.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Nilai LIKE dengan PDO dengan Selamat dalam Pertanyaan SQL?. 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