Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengikat Nilai LIKE dalam Pertanyaan PDO Dengan Berkesan?

Bagaimana untuk Mengikat Nilai LIKE dalam Pertanyaan PDO Dengan Berkesan?

Barbara Streisand
Barbara Streisandasal
2024-11-15 03:57:02423semak imbas

How to Bind LIKE Values in PDO Queries Effectively?

Mengikat Nilai LIKE dalam PDO

Apabila menggunakan pertanyaan LIKE dalam PDO, adalah penting untuk memahami cara mengikat nilai carian dengan betul untuk mengelakkan perkara yang tidak dijangka keputusan.

Mengikat dengan Separa Padankan

Untuk mengikat padanan separa, anda boleh menggunakan sintaks berikut:

SELECT wrd FROM tablename WHERE wrd LIKE :partial

Ikat parameter :separa kepada nilai separa yang anda ingin cari. Contohnya, jika anda mempunyai $partial = "somet", anda akan mengikatnya sebagai:

$stmt->bindParam(':partial', $partial);

Mengikat dengan Wildcard

Untuk mengikat padanan separa dengan kad bebas pada penghujungnya, anda boleh menggunakan salah satu daripada ini kaedah:

  1. PDO-Generated Wildcard:

    Gunakan sintaks berikut:

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

    Ikat parameter :separa kepada nilai separa tanpa wildcard.

  2. SQL-Generated Wildcard:

    Gunakan sintaks berikut:

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

    Ikat parameter :separa kepada nilai separa tanpa kad bebas.

Pertanyaan SUKA Kompleks

Jika nilai separa mengandungi aksara khas seperti %, _ atau , anda perlu melepaskannya untuk mengelakkan hasil yang tidak diingini. Gunakan kod berikut:

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

Dengan mengikut garis panduan ini, anda boleh mengikat nilai LIKE dengan berkesan dalam pertanyaan PDO anda.

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