PHP MySQL 语句 - "select as"和 "where"

标签 php mysql select printf

我有以下 SQL 语句,它从数据库中选择公司(带有存储的纬度/经度)并显示距客户位置最近的 5 个位置。这工作完美:

$query = sprintf("SELECT company_name, address, telephone, fax, contact_email, website, url, latitude, longitude, (1.609344 * 3959 * acos( cos( radians('".$center_lat."') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('".$center_lng."') ) + sin( radians('".$center_lat."') ) * sin( radians( latitude ) ) ) ) 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, address, telephone, fax, contact_email, website, url, latitude, longitude, (1.609344 * 3959 * acos( cos( radians('".$center_lat."') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('".$center_lng."') ) + sin( radians('".$center_lat."') ) * sin( radians( latitude ) ) ) ) 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));

...但这根本不返回任何结果。

有什么想法吗?

最佳答案

您不能在 where 条件中使用计算值distance

请使用拥有

where ....
having distance < 50

顺便说一句:距离单位是公里?

关于PHP MySQL 语句 - "select as"和 "where",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13670911/

相关文章:

php - 如何创建一个 SQL 查询,其中我可以使用 WHERE & AND 子句选择一列的最大数量

Postgresql:选择不同的 - 列的组合

mysql表性能升级(索引

ruby-on-rails - squeel 中的嵌套查询

mysql - 比较mysql中同一列的值

javascript - 当我尝试使用 ajax post 将值从 JavaScript 发送到 PHP 时出现错误值

php - HTML5 网络存储与 Cookie

php - 如果产品与类别相关联,则返回类别的非常复杂的查询

php - 抛出数据库错误异常时可以回滚事务吗?

php - 插入失败:Column count doesn't match value count at row 1