Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengikat Operator LIKE dengan Watak Khas dalam PDO dengan betul?

Bagaimana untuk Mengikat Operator LIKE dengan Watak Khas dalam PDO dengan betul?

Susan Sarandon
Susan Sarandonasal
2024-11-28 19:23:15528semak imbas

How to Properly Bind LIKE Operators with Special Characters in PDO?

Menggunakan Operator LIKE dengan Pengikatan PDO

Mengikat nilai LIKE dengan PDO boleh mengelirukan kerana penggunaan aksara khas ('%' dan '_') dalam corak padanan. Dalam pertanyaan khusus ini:

SELECT wrd FROM tablename WHERE wrd LIKE '$partial%'

Terdapat beberapa pilihan untuk mengikat rentetan separa '$partial%':

  • Pilihan 1:
SELECT wrd FROM tablename WHERE wrd LIKE ':partial%'

Di sini, parameter ':partial' terikat kepada '$partial="somet"', menambahkan kad bebas '%' pada hujung rentetan.

  • Pilihan 2:
SELECT wrd FROM tablename WHERE wrd LIKE ':partial'

Dalam kes ini, parameter ' :partial' terikat kepada '$partial="somet%"', yang termasuk aksara kad bebas dalam terikat nilai.

  • Pilihan 3 (Alternatif):
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')

Pilihan ini membolehkan anda melakukan penggabungan rentetan dalam pertanyaan MySQL, sebaliknya daripada dalam kod PHP.

Pengendalian Istimewa Aksara

Jika rentetan separa mengandungi aksara khas seperti '%', '_' atau '', kaedah yang lebih kompleks diperlukan untuk melepaskannya dengan betul. Berikut ialah contoh:

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

Dalam kod ini, aksara khas digantikan dengan jujukan melarikan diri (' ', ' %' dan ' _') untuk memastikan ia ditafsirkan dengan betul oleh MySQL.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Operator LIKE dengan Watak Khas dalam PDO dengan betul?. 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