php 多条件复合搜索 10

提交页post传过来的值,要做十一个,现在用三个值来说明这个问题$Type=$_POST['cat1'];$Part_num=$_POST['Part_num'];$VW... 提交页post传过来的值,要做十一个,现在用三个值来说明这个问题

$Type = $_POST['cat1'];
$Part_num = $_POST['Part_num'];
$VWDC = $_POST['cat2'];

$sql = "select * from table ";
$sql.=" where ";

if($Type!="") { $sql.="Type='".$Type."' "; }
if($Part_num!="") { $sql.="Part_num='".$Part_num."'" ; }
if($VWDC!="") { $sql.="VWDC='".$VWDC."' "; }

echo "$sql"; //这样打印出来 sql 语句 where 后面是没有 and 连接查询的!

问题:这个and 应该写在那个位置 ,打个比方
if($Part_num!="") { $sql.="and"."Part_num='".$Part_num."'" ; }
写在前面的话,那如果 $Type传过来的是为空值,不就是 select * from table where and …… 错误!

同理写在后面,那后面的值也有空值!

有什么好办法解决! 想了下,在变量前后加 “and” 都有可能出现空值,导致 sql 查询错误。。是不是在sql 查询语句做处理?
展开
 我来答
0o胡少侠o0
2012-08-27 · 超过15用户采纳过TA的回答
知道答主
回答量:30
采纳率:100%
帮助的人:37.7万
展开全部
这个简单,将
$sql = "select * from table ";
$sql.=" where ";

改成:
$sql = "select * from table ";
$sql.=" where 1=1 ";
Mercedes默秒全
2012-08-27 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:96.9万
展开全部
首先一点 楼主必须要了解的.
任何要进数据库的变量,必须要先格式化.切记! 这个是安全编程第一步
int型要intval, string要转义 等等.
这样就可以避免你说的情况了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式