PHP PDO 準備語句- MySQL LIKE 查詢
問題:
查詢:
<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>
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>
解決方案錯誤在於execute()方法中指派給:searchTerm參數的值。使用預備語句時不需要雙引號。
<code class="php">$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
預備語句處理資料與查詢分開語句處理資料與查詢分開語句。它們不執行字串替換。僅當將值直接嵌入到查詢中時才會添加引號。
以上是為什麼我的 PHP PDO 準備語句與 MySQL LIKE 查詢沒有回傳結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!