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

DDD
Lepaskan: 2024-10-31 10:41:02
asal
963 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!