用户可以输入可变数量的搜索词,并且需要根据这些术语动态构建相应的查询。目标是创建一个适应此动态输入的准备好的语句。
构造查询表达式:
将每个搜索词包装在带有用于绑定值的占位符的 LIKE 条件(%?).
示例:
$construct .= "name LIKE %?%";
绑定参数:
打包数据类型和输入值使用 splat 运算符将其放入一个数组中(...).
示例:
$parameters = ['sss', '%Bill%', '%N_d%', '%Dave%'];
准备和执行语句:
准备语句使用动态 WHERE 子句并绑定参数。
$stmt = $mysqli->prepare('SELECT * FROM info WHERE ' . implode(' OR ', $conditions)); $stmt->bind_param(...$parameters); $stmt->execute();
检索结果:
执行查询并根据需要获取结果。
$result = $stmt->get_result(); foreach ($result as $row) { echo '<div>' . $row['name'] . '</div>\n'; }
示例更正代码:
<?php $string = "my name"; $search_exploded = explode(" ", $string); $num = count($search_exploded); $conditions = []; $parameters = ['']; foreach (array_unique($search_exploded) as $value) { $conditions[] = "name LIKE ?"; $parameters[0] .= 's'; $parameters[] = "%{$value}%"; } $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); } foreach ($result as $row) { echo '<div>' . $row['name'] . '</div>\n'; } ?>
以上是如何使用准备好的语句在 MySQLi 中构建动态 LIKE 条件 SELECT 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!