我试图在我的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);
答案 0 :(得分:3)
AND语句存在间距问题。
对于所有* _stat变量,在字符串的开头和结尾添加一个空格,这样sql查询就不会中断。
例如:
$size_stat = " AND size='$size2' ";
另外,请确保“WHERE”和“HAVING”子句之间有空格。
更新:另外,检查查询是否实际返回任何结果。
UPDATE2 :替换点'。'在您的查询中使用空格......