首頁 > 資料庫 > mysql教程 > 為什麼我的 PHP PDO 準備語句不能與 MySQL LIKE 查詢一起使用?

為什麼我的 PHP PDO 準備語句不能與 MySQL LIKE 查詢一起使用?

Patricia Arquette
發布: 2024-11-30 10:41:13
原創
440 人瀏覽過

Why Doesn't My PHP PDO Prepared Statement Work with MySQL LIKE Queries?

PHP PDO 準備語句- MySQL LIKE 查詢:一個難題

使用PHP 的PDO 類別(MySQL 驅動程式)時,使用準備語句執行My LIKE 查詢可以是 LIKE 查詢一項令人困惑的任務。看似簡單的語法通常無法產生所需的結果。

考慮以下使用MySQL 用戶端無縫擷取資料的查詢:

SELECT   ...
FROM      hs
...
WHERE     hs.hs_text LIKE "%searchTerm%"
LIMIT 25;
登入後複製

難題

但是,將此查詢移植到PHP 後,您可能會遇到無法返回任何結果的挫折感,無論您使用哪種語法試圖。下面的程式碼示範了此問題:

$sql = 
    'SELECT   ...
    FROM      hs
    ...
    WHERE     hs.hs_text LIKE :searchTerm
    LIMIT 25';

$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));
登入後複製

嘗試將搜尋字詞提供為CONCAT('%', ?, '%')、"%:searchTerm%" 或":searchTerm",而相應地修改執行行,證明是徒勞的。

解決這個難題的關鍵在於理解準備好的語句如何處理資料。它們與查詢分開傳送數據,從而在嵌入值時無需引號。

因此,正確的解決方案是:

$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
登入後複製

透過從搜尋字詞參數中刪除封閉的雙引號,您現在可以利用準備好的語句的力量,讓您成功執行LIKE 查詢。

以上是為什麼我的 PHP PDO 準備語句不能與 MySQL LIKE 查詢一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板