【发布时间】:2015-06-11 07:09:22
【问题描述】:
用户需要在表单中勾选接收通讯的选项,例如:
<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" />
但是我有问题如何使用选中的选项为 db 创建查询
到目前为止我有这个代码,但它并不好,因为时事通讯需要一直为 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."
";
【问题讨论】:
-
首先在 SQL 中从您的 SQL 查询开始,然后让它工作,所有的 OR 使结果非常开放,发布您的 SQL,例如应该适用于一个示例(你会期望的)跨度>
-
如果您没有得到想要的结果 - 数据有问题吗?一目了然,您应该使用
AND -
@Goikiu 当我检查例如女性和增值税时,我没有得到我想要的结果,因为查询看起来像这样
SELECT acEmail AS email FROM _site_vuser WHERE anNewsletter=1 OR anGender = 1 OR acVAT = "",它应该看起来像这样SELECT acEmail AS email FROM _site_vuser WHERE anNewsletter=1 AND anGender = 1 OR acVAT = '' -
@gandrap 我在这里为你添加了答案stackoverflow.com/a/30774504/4323504
标签: php sql sql-server