首页 >后端开发 >php教程 >如何在 SQL 中的预准备语句中安全地使用 LIKE '%{Var}%'?

如何在 SQL 中的预准备语句中安全地使用 LIKE '%{Var}%'?

Susan Sarandon
Susan Sarandon原创
2024-12-15 12:02:11543浏览

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