Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengikat Nilai SUKA dengan % Aksara dalam PDO?

Bagaimana untuk Mengikat Nilai SUKA dengan % Aksara dalam PDO?

Linda Hamilton
Linda Hamiltonasal
2024-11-16 16:59:03763semak imbas

How to Bind LIKE Values with the % Character in PDO?

Mengikat Nilai LIKE dengan % Aksara dalam PDO

Dalam pertanyaan SQL dipacu PDO, adalah perkara biasa untuk menghadapi keperluan untuk mengikat nilai LIKE yang merangkumi % aksara kad bebas. Mengikat nilai sedemikian memastikan pencegahan suntikan SQL. Walau bagaimanapun, sintaks untuk berbuat demikian boleh mengelirukan.

Pertanyaan dengan LIKE '%': Pertimbangan Mengikat

Pertimbangkan pertanyaan:

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

Di sini, anda mahu ikat pembolehubah $partial menggunakan PDO. Dilema timbul apabila memutuskan cara untuk mengikat % aksara.

Pilihan untuk Mengikat

Pilihan 1:

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

Ikat :separa kepada $ partial="somet".

Pilihan 2:

select wrd from tablename WHERE wrd LIKE ':partial'

Ikat :separa kepada $partial="somet%".

Pilihan 3 (Alternatif):

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

Lakukan penggabungan rentetan menggunakan fungsi MySQL CONCAT.

Pertimbangan Kes Khas

Jika perkataan separa yang dicari mengandungi aksara % atau garis bawah, pengendalian khas diperlukan. Penyelesaiannya melibatkan penggunaan klausa ESCAPE dalam pernyataan PDO:

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

Teknik ini memastikan bahawa aksara khas ditafsirkan dengan betul dalam ungkapan LIKE.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Nilai SUKA dengan % Aksara 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