Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Pernyataan PDO yang Disediakan dengan betul dengan MySQL LIKE Queries?

Bagaimana Menggunakan Pernyataan PDO yang Disediakan dengan betul dengan MySQL LIKE Queries?

Susan Sarandon
Susan Sarandonasal
2024-12-01 07:44:14166semak imbas

How to Correctly Use PDO Prepared Statements with MySQL LIKE Queries?

PHP PDO Prepared Statement - MySQL LIKE Query

Dalam PHP, menggunakan pernyataan yang disediakan dengan PDO untuk pertanyaan MySQL LIKE boleh mencabar. Artikel ini menangani isu biasa yang dihadapi apabila cuba melaksanakan pertanyaan LIKE menggunakan pernyataan yang disediakan.

Pertimbangkan pertanyaan berikut:

SELECT    hs.hs_pk, 
          hs.hs_text, 
          hs.hs_did, 
          hd.hd_did, 
          hd.hd_text, 
          hv.hv_text, 
          hc.hc_text 
FROM      hs 
LEFT JOIN hd 
 ON       hs.hs_did = hd.hd_did 
LEFT JOIN hd 
 ON       hd.hd_vid = hv.hv_id 
LEFT JOIN hc 
 ON       hd.hd_pclass = hc.hc_id
WHERE     hs.hs_text LIKE "%searchTerm%"
LIMIT 25;

Pertanyaan ini berjaya mencari rentetan yang mengandungi istilah carian apabila dilaksanakan terus dalam klien MySQL. Walau bagaimanapun, apabila menterjemah pertanyaan ini kepada PDO dengan pernyataan yang disediakan, keputusan tidak dikembalikan.

Kod PHP yang disediakan menggambarkan percubaan yang gagal untuk melaksanakan pertanyaan LIKE menggunakan pelbagai sintaks. Isunya terletak pada sintaks yang digunakan untuk menentukan istilah carian dalam pernyataan yang disediakan.

Percubaan yang salah termasuk:

$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));

Pendekatan yang betul ialah menggunakan sintaks berikut:

$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));

Penjelasan:

Disediakan pernyataan tidak melakukan penggantian rentetan mudah. Data dipindahkan secara berasingan daripada pertanyaan, menjadikan petikan tidak diperlukan apabila membenamkan nilai. Sebut harga hanya diperlukan apabila nilai sebut harga sebenar perlu dimasukkan ke dalam pertanyaan.

Atas ialah kandungan terperinci Bagaimana Menggunakan Pernyataan PDO yang Disediakan dengan betul dengan MySQL LIKE Queries?. 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