首頁 >後端開發 >php教程 >如何在 MySQLi 準備好的語句中安全地建立動態 LIKE 條件?

如何在 MySQLi 準備好的語句中安全地建立動態 LIKE 條件?

Barbara Streisand
Barbara Streisand原創
2024-12-17 18:24:11851瀏覽

How to Securely Build Dynamic LIKE Conditions in MySQLi Prepared Statements?

將具有動態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中文網其他相關文章!

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