在 PDO 中實作 LIKE 查詢
在 PDO 中實現 LIKE 查詢可能會帶來挑戰。考慮範例查詢:
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'"; $params = array($var1, $var2); $stmt = $handle->prepare($query); $stmt->execute($params);
儘管 PDO 連線和其他查詢的功能有效,但 LIKE 查詢可能無法傳回結果。
修正語法
要修正查詢,請確保% 符號包含在$params 陣列中,而不是查詢:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);
理解問題
在原始查詢中,%符號放置在查詢本身。但是,當準備好查詢時,$params 中的值將在已引用的字串中引用。這會產生以下查詢:
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
此查詢不會傳回任何結果,因為這些值未正確轉義。透過將 % 符號放入 $params 陣列中,它們將成為轉義值的一部分,並且查詢將正確執行。
以上是為什麼我的 PDO LIKE 查詢失敗,如何修復它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!