关于为同一个表列构造多个输入的MySQLi查询,我有一个简单的问题。基本上,我希望人们能够显示(1)和(2)和(1和2)的结果,但我经常遇到问题。
HTML:
<form method="get" action="page.php">
<ul>
<li><input type="checkbox" name="PT1" value="Condo">Condo</li>
<li><input type="checkbox" name="PT2" value="Single Family">Single Family</li>
</ul>
</form>PHP:
if($_GET['PT1'] == "Condo") {
$PropType1 = "(property_type = 'Condo') AND ";
}
if($_GET['PT2'] == "Single Family") {
$PropType2 = "(property_type = 'Single Family') AND ";
}
$setPropType = $PropType1 . $PropType2;MySQLi语句:
$customSelectSQL = "SELECT * FROM $listingsTable WHERE $setPropType (listing_active = 'yes')";我遇到了一个问题,如果他们都被检查了,查询就什么也不做了,我得到的结果为零。但是当他们被单独挑选出来的时候,效果很好。
我认为数据库正在搜索等于两个输入的属性,而不是分别等于每个输入并为每个单独的输入返回每一行。讲得通?
我猜想这是一个封装的问题,但是当我搜索"MySQL SELECT倍数“或"MySQLi封装”时,我会得到一堆不那么有用的示例。
提前感谢!
发布于 2015-05-02 02:41:33
我认为当您选择两个复选框时,应该使用OR,因为您选择的字段有两个值。
$PropType1 = "";
if($_GET['PT1'] == "Condo") {
$PropType1 .= "(property_type = 'Condo') ";
}
if($_GET['PT2'] == "Single Family") {
$PropType2 = "";
// if first checkbox "Condo" is selected also, add OR
if($_GET['PT1'] == "Condo") {
$PropType2 .= " OR ";
}
$PropType2 .= "(property_type = 'Single Family') AND ";
}
else {
if($_GET['PT1'] == "Condo") {
$PropType1 .= " AND ";
}
}https://stackoverflow.com/questions/29997692
复制相似问题