举例说明: 1、室=1并且厅=2 SELECT * FROM table where 室='1' AND 厅='2' 2、室=1并且厅=所有 SELECT * FROM table where 室='1' 3、室=1并且厅=2或者厅=3 SELECT * FROM table where 室='1' AND (厅='2' OR 厅='2')
这样分下去不是有很多条SQL语句了吗?而且是要事先判断是执行那一条,是吗?
<!--chouse_list.php--><select name="Sq" size="1"> <option value=0>面积</option> <option value=1>30以下</option> <option value=2>30-50</option> <option value=3 selected>50-70</option> <option value=4>70-90</option> <option value=5>90-120</option> <option value=6>120以上</option> </select> <? //... ... if($Sp!=0) { switch($Sp) { case 1: $condition=" Sp<30 "; break; case 2: $condition=" Sp>30 and Sp<50 "; break; case 3: $condition=" Sp>50 and Sp<70 "; //... ... } } if($Re!=0) { switch($Re) { case 1: $condition.=" Sp<500 "; break; case 2: $condition.=" Sp>500 and Sp<1000 " break; case 3: $condition.=" Sp>1000 and Sp<2000"; //... ... } } $sql = "select count* from ".$db." where".$condition; //... ?>
只用一條sql就可以了,不過之間你要做許多判斷。 比如你可以這麽寫: 確定值的條件: if($field1){ $fields1sql=" and field1=".$field1; } 範圍值的條件: if($field2=="30-50"){ $fields2sql=" and field2>30 and field2<=50"; } if($field2=="50-100"){ $fields2sql=" and field2>50 and field2<=100"; } 然後寫sql: $sql="select * from table where 1=1".$fields1sql.$fields2sql;
你的意思是怎样啊?你是觉得这样速度慢还是怎样?
你的方法可以说得详细点吗,应该没有那么简单吧,那些条件是有范围限制的,例如:
面积在50到80之间
這樣得到的才是你想要的結果吧。
<SELECT name=Di size=1>
<OPTION selected value=全部>所属区</OPTION>
<OPTION value=天河>天河</OPTION>
<OPTION value=东山>东山</OPTION>
<OPTION value=白云>白云</OPTION>
<SELECT name=Ro size=1>
<OPTION selected value=-100>室</OPTION>
<OPTION value=1>1</OPTION>
<OPTION value=2>2</OPTION>
<OPTION value=3>3</OPTION>
<OPTION value=4>4</OPTION>
<OPTION value=5>5</OPTION>
<OPTION value=6>6</OPTION>
<OPTION value=7>7</OPTION>
<OPTION value=8>8</OPTION>
<OPTION value=9>9</OPTION></SELECT>
<INPUT name=search1 onclick="return check_search(this.form);" type=submit value=" 搜 索 ">
</DIV></TD></TR></form>if($lchouse_form)//form 表单名
{}
如果我填好搜索内容后,按搜索键是否就是执行以上的if 语句.也就说$lchouse_form 是否为真?
1、室=1并且厅=2
SELECT * FROM table where 室='1' AND 厅='2'
2、室=1并且厅=所有
SELECT * FROM table where 室='1'
3、室=1并且厅=2或者厅=3
SELECT * FROM table where 室='1' AND (厅='2' OR 厅='2')
<option value=0>面积</option>
<option value=1>30以下</option>
<option value=2>30-50</option>
<option value=3 selected>50-70</option>
<option value=4>70-90</option>
<option value=5>90-120</option>
<option value=6>120以上</option>
</select>
<?
//... ...
if($Sp!=0)
{
switch($Sp)
{
case 1:
$condition=" Sp<30 ";
break;
case 2:
$condition=" Sp>30 and Sp<50 ";
break;
case 3:
$condition=" Sp>50 and Sp<70 ";
//... ...
}
}
if($Re!=0)
{
switch($Re)
{
case 1:
$condition.=" Sp<500 ";
break;
case 2:
$condition.=" Sp>500 and Sp<1000 "
break;
case 3:
$condition.=" Sp>1000 and Sp<2000";
//... ...
}
}
$sql = "select count* from ".$db." where".$condition;
//...
?>
比如你可以這麽寫:
確定值的條件:
if($field1){
$fields1sql=" and field1=".$field1;
}
範圍值的條件:
if($field2=="30-50"){
$fields2sql=" and field2>30 and field2<=50";
}
if($field2=="50-100"){
$fields2sql=" and field2>50 and field2<=100";
}
然後寫sql:
$sql="select * from table where 1=1".$fields1sql.$fields2sql;