php - 选择多个条件

标签 php sql sql-server

在表单中,用户需要勾选谁将收到时事通讯,例如:

<input type="checkbox" name="male"  value="1" />
<input type="checkbox" name="female"  value="1" />
<input type="checkbox" name="person" value="1" />
<input type="checkbox" name="company" value="1" /> 

但是我有问题如何使用选中的选项为数据库创建查询

到目前为止我有这段代码,但它并不好,因为时事通讯需要一直为 1,之后我有 OR,因为当我输入 AND 时我没有得到我需要的结果:

if($options['male']) {
            $sqlAddMale = " OR gender = 2 ";
        }
        if($options['female']) {
            $sqlAddFemale = " OR gender = 1 ";
        }
        if($options['person']) {
            $sqlAddPerson = " OR VAT = '' ";
        }
        if($options['company']) {
            $sqlAddCompany = " OR VAT <> '' ";
        }

        $query = "
            SELECT email FROM users WHERE newsletter=1
            ".$sqlAddMale."
            ".$sqlAddFemale."
            ".$sqlAddPerson."
            ".$sqlAddCompany."          
            ";

最佳答案

我想你需要这样的东西:

$placeOr = false;
if($options['male']) {
    $placeOr = true;
    $sqlAddMale = " (newsletter=1 AND gender = 2) ";
}
if($options['female']) {
    $sqlAddFemale = (($placeOr)?" Or ":"");
    $sqlAddFemale .= " (newsletter=1 AND gender = 1) ";
    $placeOr = true;
}
if($options['person']) {
    $sqlAddPerson = (($placeOr)?" Or ":"");
    $sqlAddPerson .= " (newsletter=1 AND VAT = '') ";
    $placeOr = true;
}
if($options['company']) {
    $sqlAddCompany = (($placeOr)?" Or ":"");
    $sqlAddCompany .= " (newsletter=1 AND VAT <> '') ";
    $placeOr = true;
}

$query = "
    SELECT email FROM users WHERE 
    ".$sqlAddMale."
    ".$sqlAddFemale."
    ".$sqlAddPerson."
    ".$sqlAddCompany."          
    ";

关于php - 选择多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30773942/

相关文章:

php - 如何从数组数组中获取数组 (PHP)

php - 如何在 PHP 中使用 Rails 应用程序 session

mysql - 从具有多个条件的数据库中获取数据

sql - 是否可以在 sql From 子句中使用 Case 语句

sql-server - SSRS 复制数据库的最佳方法是什么

sql - 用于选择数字最后 6 位数字的存储过程

javascript - 从 jquery-wordpress 中的选择器获取文本

javascript - magento2中的媒体存储浏览器字段

mysql - 加入两个表并从第二个表中读取两条记录

sql - 从服务器日志表查找停机持续时间