首页 >后端开发 >php教程 >如何使用 MySQLi 预准备语句安全地构建动态 LIKE 查询?

如何使用 MySQLi 预准备语句安全地构建动态 LIKE 查询?

DDD
DDD原创
2024-12-05 21:30:12731浏览

How to Securely Build Dynamic LIKE Queries with MySQLi Prepared Statements?

使用带有动态 LIKE 条件的预准备语句

要使用 MySQLi 预准备语句构造具有动态数量的 LIKE 条件的 SELECT 查询,如下必须将百分号 (%) 包裹在参数周围,而不是

以下是在 PHP 中实现此操作的分步指南:

  1. 提取并准备表达式和数据类型:
    分离用户使用explode()输入各个搜索词。初始化数组,用于存储 WHERE 子句表达式($conditions)以及数据类型和值的组合($parameters)。
$conditions = [];
$parameters = [''];
  1. 构造表达式和参数:
    迭代搜索词,创建一系列 LIKE 表达式并添加相应的数据类型$parameters.
foreach ($search_exploded as $value) {
    $conditions[] = "name LIKE ?";
    $parameters[0] .= 's';
    $parameters[] = "%{$value}%";
}
  1. 准备并执行查询:
    将 $conditions 连接到 WHERE 子句中。准备带有查询的语句,使用 splat 运算符 (...) 绑定 $parameters,然后执行它。
$query = "SELECT * FROM info";
if ($conditions) {
    $stmt = $mysqli->prepare($query . ' WHERE ' . implode(' OR ', $conditions));
    $stmt->bind_param(...$parameters);
    $stmt->execute();
    $result = $stmt->get_result();
} else {
    $result = $conn->query($query);
}

通过执行以下步骤,您可以有效地使用动态执行查询使用 MySQLi 准备语句的 LIKE 条件数量,确保灵活性和安全性。

以上是如何使用 MySQLi 预准备语句安全地构建动态 LIKE 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn