你的$query="select filmname from movie where ".$tempquery1.",".$tempquery2;
会产生这样的串
select filmname from movie where leixing_id=1,niandai_id=2
这显然不符合sql的语法
应该是
select filmname from movie where leixing_id=1 and niandai_id=2

select filmname from movie where leixing_id=1 or niandai_id=2
视需要而定

解决方案 »

  1.   

    看不懂吗?无论如何,你总得产生合乎语法的sql串吧?
      

  2.   

    先找一个必选的字段;
    $query='select filmname from movie where filename like '%';
    然后再判断查询条件;
    if($leixing_id!="")
    { $query=$query.' and leixing_id='.$leixing_id; }
    if($niandai_id!="")
    { $query=$query.' and niandai_id='.$niandai_id; }然后执行!你是需要这样的效果吗?
      

  3.   

    哦!
    上面的第一个语句错误了!
    应该是:
    $query="select filmname from movie where filmname like '%'";
    然后再判断查询条件;
    if($leixing_id!="")
    { $query=$query.' and leixing_id='.$leixing_id; }
    if($niandai_id!="")
    { $query=$query.' and niandai_id='.$niandai_id; }然后执行!你是需要这样的效果吗?
      

  4.   

    不是看不懂,只是搞不清楚我所想实现的功能该怎么写?我原先所想的是写一个分条件查询的sql语句,如果用户在查询时赋于了这个条件,就把该条件赋在sql语句的后面,就像“$query="select filmname from movie where ".$tempquery1."and".$tempquery2;”这样表示。但问题是用户在查询时如果只用到一个条件,比如:“$tempquery1="leixing_id=$leixing_id";”,“$tempquery2="";”那么所产生的语句就不服合sql语法规范了。我现在只想弄清楚你们在面对这种多条件语句查询时是怎么做的,我上面所提到的这种思路对不对?
      

  5.   

    谢谢yimoo(剑锋) ,我需要的就是这种效果。
      

  6.   

    我没看明白,既然上边已经if($leixing_id !=""){
    $tempquery1="leixing_id=$leixing_id";
    }else{
    $tempquery1="";
    }if($niandai_id !=""){
    $tempquery2="niandai_id=$niandai_id";
    }else{
    $tempquery2="";
    }
    为什么还要这样做呢
    if($leixing_id !="" or $niandai_id !=""){
    $query="select filmname from movie where ".$tempquery1.",".$tempquery2;
    }else{
    $query="select filmname from movie";
    }
    前后明显矛盾呀