php - 带复选框的 PHP MySQL 高级搜索
问题描述
我正在尝试构建使用多个表单字段并相应地调整 MySQL 搜索的搜索逻辑。我的主要问题是处理多个复选框时。下面的内容让我很接近,但由于某种原因,最后我得到了多个“或”。下面以我(nema = '1' OR OR nema = '12' OR OR nema = '4' OR OR )
为例。为每个复选框添加了更多 OR。我错过了什么或做得不对?
$rating = mysqli_real_escape_string($db, implode(',', $_POST['rating']));
$q = "SELECT * FROM lekker WHERE height BETWEEN 20 AND 30 ";
if (!empty($rating)) {
$var = explode(',',$rating);
$rating_count = count($var);
if($rating_count > 1) {
$q .= "AND (";
foreach($var as $test) {
$q .= "nema = '$test'";
for($i=0;$i<$rating_count;$i++) {
if($i!=$rating_count-1) {
$q .= " OR ";
}
}
}
$q .= " )";
} else {
$q .= "nema = '$rating'";
}
}
$q .= " ORDER BY `part` ASC";
这是我想要实现的选择:
SELECT * FROM lekker WHERE height BETWEEN 20 AND 22 AND (nema = '1' OR nema = '12') ORDER BY part ASC
解决方案
不必担心是否需要添加 OR,只需foreach
在完成foreach
.
if ($rating_count > 1) {
$q .= "AND (";
foreach($var as $test) {
$q .= "nema = '$test' OR ";
}
$q .= rtrim($q,' OR ') . ' )';
} else {
$q .= "nema = '$rating'";
}
推荐阅读
- javascript - 使用对象值动态合并数组
- python - 为什么 set() 构造函数比 list() 慢
- r - ggplot2 分组箱线图不会将不同时间点的组分开
- amazon-web-services - Redmine数据库yml中的AWS RDS SSL连接错误mysql2
- python - 这个模块'utils'的具体包是什么?
- haskell - 具有来自 IO 的第一个值的列表
- php - 我想从我的 php 表中提取值。我已在表格中嵌入表格,但无法使用 $_POST 获取值
- c - 运行 C 输出时拒绝访问
- javascript - 如何防范编码 URL XSS 攻击
- postgresql - org.postgresql.util.PSQLException:列索引超出范围