LIKE
搜尋使用 LIKE
運算子進行模式匹配的資料庫查詢需要仔細處理,以防止漏洞並確保效能。 使用不當可能會導致錯誤。
讓我們檢查一些有缺陷的方法:
<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';</code>
此操作失敗,因為 SQL 字串中的變數數量與提供給 bind_param()
的參數不符。
<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';</code>
由於查詢字串中通配符 (%{}) 的放置不正確,這會導致語法錯誤。
正確的方法使用準備好的語句,使用問號佔位符並適當地綁定變數:
<code class="language-php">$likeVar = "%" . $yourParam . "%"; $stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?"); $stmt->bind_param("s", $likeVar); $stmt->execute();</code>
此程式碼:
$yourParam
) 來建構模式。 ?
佔位符準備查詢。 bind_param()
綁定模式字串(「s」表示字串)。 將準備好的語句與LIKE
一起使用可以防止SQL注入並提高查詢效率。
以上是準備好的語句如何提高LIKE搜尋的效率和安全性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!