php/mysql高级搜索页面
我在开发高级搜索代码时遇到了一个问题,使用php作为输入和输出,使用sql选择和过滤数据 php代码: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
<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' ";
}