我有以下 SQL 语句,它从数据库中选择公司(带有存储的 lat/lng)并显示离客户位置最近的 5 个位置。这是完美的工作:
$query = sprintf("SELECT company_name、地址、电话、传真、contact_email、网站、url、纬度、经度、(1.609344 * 3959 * acos( cos( radians('".$center_lat."') ) * cos( radians ( 纬度 ) ) * cos( 弧度( 经度 ) - 弧度('".$center_lng."') ) + sin( 弧度('".$center_lat."') ) * sin( 弧度(纬度) ) ) ) AS distance FROM cmsms_module_compdir_companies WHERE status='published' AND latitude!='' AND longitude!='' ORDER BY distance limit 5 ",
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat));
但是,我想将结果限制在距离客户位置 X 距离内的商店——比如 50 公里。我想我可以在下面用粗体添加一点:
$query = sprintf("SELECT company_name、地址、电话、传真、contact_email、网站、url、纬度、经度、(1.609344 * 3959 * acos( cos( radians('".$center_lat."') ) * cos( radians ( 纬度 ) ) * cos( 弧度( 经度 ) - 弧度('".$center_lng."') ) + sin( 弧度('".$center_lat."') ) * sin( 弧度(纬度) ) ) ) AS distance FROM cmsms_module_compdir_companies WHERE status='published' AND latitude!='' AND longitude!='' AND distance<'50' ORDER BY distance limit 5", mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat ));
...但这根本不返回任何结果。
有任何想法吗?