php/mysql高级搜索页面

php/mysql高级搜索页面,php,sql,Php,Sql,我在开发高级搜索代码时遇到了一个问题,使用php作为输入和输出,使用sql选择和过滤数据 php代码: <form action="index.php?Type=Advance" method="post"> <input type="text" name="name"> <input type="text" name="sponsor"> <select size="1" name="gen

我在开发高级搜索代码时遇到了一个问题,使用php作为输入和输出,使用sql选择和过滤数据

php代码:

<form action="index.php?Type=Advance" method="post">
      <input type="text"   name="name">
                <input type="text"   name="sponsor">

    <select size="1" name="gender" id="">
    <option value="male">male</option>
    <option value="female">female</femal>
</select>
                       <select size="1" name="address" id="">
    <option value="x">x</option>
    <option value="y">y</option>
    <option value="z">z</option>
       </select>
             <input type="submit">
  </form>
事实上,它是有效的,但是如果我没有插入名称。。。sql语句如下所示

选择*
从桌子上
WHERE和赞助商='www'
性别=‘男性’

如果我想在表上搜索,但不插入名称,该怎么办。。如果我没有插入名称,如何让sql语句工作。

一个典型的解决方案总是先添加一个真实条件,例如
1=1
。不带任何附加条件的查询将变为

SELECT * FROM table WHERE 1=1
当您添加任何
条件时,您只需将它们添加到末尾,第一个或最后一个条件没有特殊情况:

SELECT * FROM table WHERE 1=1 AND sponsor = 'www' AND gender = 'male'

请注意,如果使用或而不是,并且第一个条件应为false,如
0=1

,则可以使用如下标志变量:

$cheack = "";
$flag = False;

if(isset($name)&&$name != ""){
 $cheack.="  name =  '$name' ";
 $flag =True;
}

if(isset($sponsor)&&$sponsor != ""){
 if($flag){
  $cheack.="AND ";
 }
 $cheack.="sponsor =  '$sponsor' ";
}

if(isset($gender)&&$gender != ""){
 if($flag){
  $cheack.="AND ";
 }
 $cheack.="gender =  '$gender' ";
}

if(isset($address) &&$address != "" ){
 if($flag){
  $cheack.="AND ";
 }
 $cheack.="workplace =  '$address' ";
}

我不太明白。。。如果您不声明名称,而$cheack将由赞助商/性别/地址组成,那么它看起来会起作用。。。什么不起作用?错误消息?另外,我也不知道为什么在语句中有
WHERE 1=1
。确保在不使用
mysql\u real\u escape\u string()参数时正确转义查询字符串。
$cheack = "";
$flag = False;

if(isset($name)&&$name != ""){
 $cheack.="  name =  '$name' ";
 $flag =True;
}

if(isset($sponsor)&&$sponsor != ""){
 if($flag){
  $cheack.="AND ";
 }
 $cheack.="sponsor =  '$sponsor' ";
}

if(isset($gender)&&$gender != ""){
 if($flag){
  $cheack.="AND ";
 }
 $cheack.="gender =  '$gender' ";
}

if(isset($address) &&$address != "" ){
 if($flag){
  $cheack.="AND ";
 }
 $cheack.="workplace =  '$address' ";
}