首頁 >後端開發 >php教程 >如何在 SQL 中的預準備語句中安全地使用 LIKE '%{Var}%'?

如何在 SQL 中的預準備語句中安全地使用 LIKE '%{Var}%'?

Susan Sarandon
Susan Sarandon原創
2024-12-15 12:02:11545瀏覽

How Can I Safely Use LIKE '%{Var}%' with Prepared Statements in SQL?

有效利用帶有LIKE '%{Var}%' 的預準備語句

在SQL 查詢中使用經過淨化的使用者輸入時,建議使用使用準備好的語句來降低SQL 注入攻擊的風險。但是,在準備好的語句中使用 LIKE '%{Var}%' 模式可能會帶來挑戰。

不正確的方法:

以下語法將生成錯誤:

$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';
$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';

正確方法:

要在準備好的語句中正確使用LIKE '%{Var}%',請依照下列步驟操作:

  1. 建立字串變數來儲存LIKE 模式:
$likeVar = "%" . $ yourParam . "%";
  1. 使用下列指令準備查詢placeholder:
$ stmt = $ mysqli -> prepare('SELECT * FROM REGISTRY WHERE name LIKE ?');
  1. 將LIKE 變量綁定到佔位符:
$stmt -> bind_param('s', $likeVar);
  1. 執行查詢:
$stmt -> execute();

解釋:

  • $likeVar:此變數包含LIKE模式,使用者提供的參數前綴和後綴為通配符。
  • prepare() 與 query(): prepare() 建立一個可以使用不同參數多次執行的語句對象,而 query() 直接執行查詢。
  • bind_param():此方法將準備好的語句參數與其各自的變數值關聯起來。在本例中,佔位符 (?) 綁定到 $likeVar。
  • execute():綁定參數後,execute() 將使用指定參數執行查詢。

透過執行這些步驟,您可以在 SQL 查詢中安全地使用 LIKE '%{Var}%',同時維護安全最佳實務。

以上是如何在 SQL 中的預準備語句中安全地使用 LIKE '%{Var}%'?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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