Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah penyataan PHP PDO saya disediakan dengan pertanyaan MySQL LIKE tidak mengembalikan hasil?

Mengapakah penyataan PHP PDO saya disediakan dengan pertanyaan MySQL LIKE tidak mengembalikan hasil?

DDD
DDDasal
2024-10-31 10:41:021018semak imbas

Why does my PHP PDO prepared statement with MySQL LIKE query return no results?

PHP PDO Prepared Statement - MySQL LIKE Query

Isu:
Apabila melaksanakan pertanyaan MySQL LIKE menggunakan PDO PHP, carian tidak mengembalikan hasil.

Pertanyaan:

<code class="sql">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;</code>

Kod PHP:

<code class="php">$sql = 
'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';

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

Penyelesaian:
Kesilapan terletak pada nilai yang diberikan kepada parameter :searchTerm dalam kaedah execute(). Petikan berganda tidak diperlukan apabila menggunakan pernyataan yang disediakan.

Kod PHP yang Dibetulkan:

<code class="php">$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>

Penjelasan:
Pernyataan yang disediakan mengendalikan data berasingan daripada pertanyaan. Mereka tidak melakukan penggantian rentetan. Petikan hanya ditambah apabila membenamkan nilai terus ke dalam pertanyaan.

Atas ialah kandungan terperinci Mengapakah penyataan PHP PDO saya disediakan dengan pertanyaan MySQL LIKE tidak mengembalikan hasil?. 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