首頁 >資料庫 >mysql教程 >為什麼我的 PDO LIKE 查詢失敗,如何修復它們?

為什麼我的 PDO LIKE 查詢失敗,如何修復它們?

Susan Sarandon
Susan Sarandon原創
2024-12-28 12:39:23488瀏覽

Why Do My PDO LIKE Queries Fail, and How Can I Fix Them?

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn