將具有動態LIKE 條件的SELECT 查詢建構成mysqli 預準備語句
處理使用者輸入時,預準備語句
處理使用者輸入時,預備語句提供了一種執行SQL 的安全方法查詢。若要根據使用者輸入處理動態數量的 LIKE 條件,需要自訂方法。
問題
給定的程式碼旨在使用變數建立一個準備好的語句LIKE 條件的數量。但是,存在一個錯誤,即 % 字元沒有放置在參數周圍,而是放置在佔位符周圍。
解
foreach ($search_exploded as $search_each) { $x++; if ($x == 1) { $construct .= "name LIKE ?%"; // % now wraps the parameter } else { $construct .= " or name LIKE ?%"; // % now wraps the parameter } }
要修正此問題,% 字元應該換行構造變數中的參數。這是修改後的程式碼:
name LIKE %?% or name LIKE %?% or ...
這將產生類似以下內容的建構字串:
其他增強功能
提供的PHP 片段利用物件導向的mysqli 而不是過程語法。此外,此解決方案可確保容納動態 WHERE 子句表達式和資料類型,從而在不存在條件的情況下無需準備語句。
結論
按照以下步驟操作,您可以在mysqli準備語句中有效建構動態LIKE條件,顯著增強您的SQL查詢處理能力。以上是如何在 MySQLi 準備好的語句中安全地建立動態 LIKE 條件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!