Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengikat Parameter SUKA dengan Selamat dengan Kad Liar dalam PDO?

Bagaimana untuk Mengikat Parameter SUKA dengan Selamat dengan Kad Liar dalam PDO?

Patricia Arquette
Patricia Arquetteasal
2024-12-06 03:09:12930semak imbas

How to Safely Bind LIKE Parameters with Wildcards in PDO?

Mengikat Nilai LIKE dengan % Kad Liar dalam PDO

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.

Pilihan 1: Ikat dengan Kad Liar Separa (%) di Akhir

Ya, ini ialah pilihan yang sah:

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

di mana :partial terikat kepada $partial="somet".

Pilihan 2: Ikat dengan Kad Liar Separa (%) Di dalam Nilai

Anda juga boleh menggunakan pendekatan ini:

select wrd from tablename WHERE wrd LIKE ':partial'

di mana :partial terikat kepada $partial="somet%".

Alternatif: Gunakan Fungsi CONCAT

Jika anda mahu, anda boleh melakukan penggabungan rentetan dalam pertanyaan MySQL sendiri:

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')

Pengendalian Watak Khas

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!

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