我如何在我的mysql查询中使用变量

时间:2012-03-16 14:57:44

标签: php mysql

我试图在我的mysql语句中使用变量,因此它们会根据输入而改变。例如,如果用户未输入大小,则该语句的该部分将不会显示。对不起,我不好解释。但是,当我运行下面的代码时,我得到一个错误,但如果我删除'动态'AND语句,代码就可以了。我只是无法弄清楚我做错了什么。和想法。

        if($size2 ==''){
    $size_stat = '';
    }else{
    $size_stat = "AND size='$size2'";

    }

    if($re2 ==''){
    $re_stat = '';
    }else{
    $re_stat = "AND re='$re2'";

    }


    if($status2 ==''){
    $status_stat = '';
    }else{
    $status_stat = "AND status='$status2' ";

    }


    $result2 = mysql_query("SELECT 
      lat,lng,id,re,re_num,name,city,state,zip,address,status,category,size,
      ( 3959 * acos( cos( radians($lat2) ) 
                   * cos( radians( lat ) ) 
                   * cos( radians( lng ) - radians($long2) ) 
                   + sin( radians($lat2) ) 
                   * sin( radians( lat ) ) 
                   )
      ) AS distance 
    FROM 
      locations
    WHERE 
      (state='PA' OR state='NY') 
    .$re_stat. 
     $size_stat.  
     $status_stat. 
    HAVING 
      distance < 300
    ORDER BY 
      distance 
    LIMIT 
      0 , 50    ");

    while($array = mysql_fetch_assoc($result2)){


    $array_json[] = $array;
    }


    echo json_encode($array_json);

1 个答案:

答案 0 :(得分:3)

AND语句存在间距问题。

对于所有* _stat变量,在字符串的开头和结尾添加一个空格,这样sql查询就不会中断。

例如:

$size_stat = " AND size='$size2' ";

另外,请确保“WHERE”和“HAVING”子句之间有空格。

更新:另外,检查查询是否实际返回任何结果。

UPDATE2 :替换点'。'在您的查询中使用空格......