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
Lepaskan: 2024-12-13 12:50:10
asal
209 orang telah melayarinya

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%'
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan