php - 匹配所有选项中的所有参数然后查询数据库

标签 php mysql

抱歉,如果该标题含糊不清,我什至不知道如何称呼我正在尝试做的事情......将更新给定的评论。

我有两组复选框,第一组(称为代码)有 5 个选项,第二组有 20 个选项(称为系列)。目前,为了为我的查询构建 WHERE 语句,我这样做:

if(isset($_POST['code']) && !empty($_POST['code'])){ 
foreach($_POST['code'] as $key=>$value){ 
    if($value==1) $criteria[] = "code='".mysql_escape_string($key)."'"; 
} 
 $criteria = implode(' OR ', $criteria);
}

if(isset($_POST['family']) && !empty($_POST['family'])){ 
foreach($_POST['family'] as $key=>$value){ 
    if($value==1) $family_criteria[] = "family='".mysql_escape_string($key)."'";

} 
$family_criteria = implode(' OR ', $family_criteria);

}

这是查询的一部分

WHERE $criteria AND $family_criteria ORDER BY ....

这会导致“WHERE code=1 OR code=2 AND family=jones ORDER BY...”

而我需要它做的是“WHERE code=1 and family=jones OR code=2 and family=jones ORDER BY...”

最佳答案

如何构造以下内容:

... WHERE (code=1 or code=2) and family='jones' ...

这只需要对 code 参数生成周围添加括号进行细微调整,并且在语义上与您所说的相同。

if(isset($_POST['code']) && !empty($_POST['code'])){ 
    foreach($_POST['code'] as $key=>$value){ 
        if($value==1) $criteria[] = "code='".mysql_escape_string($key)."'"; 
    } 
    $criteria = "(" . implode(' OR ', $criteria) . ")";
}

关于php - 匹配所有选项中的所有参数然后查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17617350/

相关文章:

php - 自动完成连接 2 列 MySQL 和 PHP

javascript - 是否可以在加载时从 iFrame 中的 <head> 修改外部源

php - htmlpurifier 删除内联 css

php - 从 cron 运行 php 没有作为 CLI 运行

mysql - 如何使 Mysql/Mariadb 脚本在 debian 启动时工作?

mysql - 如何在 Laravel 5 中为 Yajra 数据表指定特定连接(或数据库名称)

php - 交响乐 3 : set value after submitting a form

php - MySQL 返回 2 行,仅显示 1 行内容

php - 尝试使用 PDO 从表单中插入数据

mysql - 从arduino获取数据并通过ethienet存储到数据库中