2012-03-16 30 views
0

我想在我的mysql语句中使用变量,以便它们将根据输入而改变。例如,如果用户没有输入大小,则该部分语句不会显示。对不起,我解释不好。但是当我运行下面的代码时,出现错误,但是如果我删除了“动态”AND语句,代码就可以工作。我无法弄清楚我做错了什么。和想法。我将如何使用我的mysql查询中的变量

 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); 
+0

缺少whitesapec猜测。例如$ status_stat =“AND status ='$ status2'”; – 2012-03-16 15:02:28

回答

3

您与AND语句有间距问题。

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

例如:

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

此外,请确保您有 “WHERE” 和 “具有” 条款之间的空格。

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

UPDATE2:替换点'。'在您的空间查询...

+0

你是什么意思?我很抱歉,如果我正在密集 – 2012-03-16 15:00:10

+0

我刚刚尝试过,并没有工作要么 – 2012-03-16 15:02:58

+0

所有你的* _stat变量? – zaf 2012-03-16 15:03:23

相关问题