我在下面有这个MySQL查询。它工作正常。
$query = sprintf("SELECT id, name, fee, lat, lng, ( 3959 * acos( cos( radians('%s') )
* cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') )
+ sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance
FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
mysql_real_escape_string($center_lat), mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat), mysql_real_escape_string($radius));
我正在尝试添加WHERE
条款,如下所示,它无法正常工作
$query = sprintf("SELECT id, name, fee, lat, lng, ( 3959 * acos( cos( radians('%s') )
* cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') )
+ sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance
FROM markers WHERE show <> 0 HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
mysql_real_escape_string($center_lat), mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat), mysql_real_escape_string($radius));
show
是一个充当旗帜的字段。如果它包含0,我希望在上面的查询中忽略该记录。 show
目前在我的MySQL数据库中定义为TINYINT(1)
。
答案 0 :(得分:1)
可能是一个反击问题:
我已经包围了“#SHOW&#39;通过反击。这里只是查询部分。试试这个。
SELECT id,
name,
fee,
lat,
lng,
( 3959 * Acos(Cos(Radians('%s')) * Cos(Radians(lat)) * Cos(
Radians(lng) - Radians('%s'))
+ Sin
(Radians('%s')) * Sin(Radians(lat))) ) AS distance
FROM markers
WHERE `SHOW` <> 0
HAVING distance < '%s'
ORDER BY distance
LIMIT 0, 20
修改:
反引号用于表和列标识符,但仅在标识符为MySQL reserved keyword时或标识符包含空格字符或超出限制集的字符时才需要。通常建议尽可能避免使用保留关键字作为列或表标识符,以避免引用问题。