首頁 > 資料庫 > mysql教程 > 準備好的語句如何提高LIKE搜尋的效率和安全性?

準備好的語句如何提高LIKE搜尋的效率和安全性?

Susan Sarandon
發布: 2025-01-16 10:57:58
原創
284 人瀏覽過

How Can Prepared Statements Improve the Efficiency and Security of LIKE Searches?

使用準備好的語句最佳化 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>
登入後複製

此程式碼:

  1. 透過將百分號連接到使用者輸入 ($yourParam) 來建構模式。
  2. 使用 ? 佔位符準備查詢。
  3. 使用 bind_param() 綁定模式字串(「s」表示字串)。
  4. 執行準備好的語句。

將準備好的語句與LIKE一起使用可以防止SQL注入並提高查詢效率。

以上是準備好的語句如何提高LIKE搜尋的效率和安全性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板