php - 如何正确地子查询 - 或者这是怎么错的?

标签 php mysql

<分区>

我正在尝试获取大量数据库条目,其中包括必须从另一个表获取的地理数据。当我尝试对它们运行自定义距离函数时会导致错误,我尝试将其作为子查询包含在内,但这似乎也不起作用(该函数确实有效)。

$bsns = $this->db->select('businesses.name, businesses.about')
                            ->select('postcodes.postcode, postcodes.lat AS lat, postcodes.long AS long')
                            ->select('industries.name')
                            ->select('get_distance_in_miles_between_geo_locations('.$geo['lat'].', '.$geo['long'].', lat, long) AS distance', null, false)
                            ->from('businesses')
                            ->join('postcodes', 'postcodes.postcode = businesses.postcode', 'left')
                            ->join('industries', 'industries.IN_ID = businesses.industry', 'left')
                            ->order_by('distance', 'ASC')
                            ->get(); 

这是我目前使用的代码,错误:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'long, `industries`.`name`, get_distance_in_miles_between_geo_locations(50.344178' at line 1

新错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'businesses`) LEFT JOIN `postcodes` ON `postcodes`.`postcode` = `businesses`.`pos' at line 1

SELECT `businesses`.`name`, `businesses`.`about`, `postcodes`.`postcode`, `postcodes`.`lat`, `postcodes`.`long`, `industries`.`name`, get_distance(50.344178, `-4`.`757147`, `lat`, `long`)` AS distance FROM (`businesses`) LEFT JOIN `postcodes` ON `postcodes`.`postcode` = `businesses`.`postcode` LEFT JOIN `industries` ON `industries`.`IN_ID` = `businesses`.`industry` ORDER BY `distance` ASC

最佳答案

你混合了单引号,MySQL 解析器不喜欢它。 它认为您已完成声明。

select('get_distance_in_miles_between_geo_locations('.$geo['lat'].', '.$geo['long'].', lat, long) AS distance', null, false)

应该是:

select('get_distance_in_miles_between_geo_locations('.$geo["lat"].', '.$geo["long"].', lat, long) AS distance', null, false)

关于php - 如何正确地子查询 - 或者这是怎么错的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27209843/

相关文章:

php - 为什么php没有返回结果,而mysql有?

php - 如何在 Ubuntu 17.04 中安装 php7.0-mbstring?

php - 我怎样才能得到明天 00h10 的时间戳?

javascript - 链接和获取自定义输出 mysql

php - MySql 从数据库中选择第二条和第三条记录

php - 在 Windows 上运行 PHP 应用程序 - 守护进程还是 cron?

php - 如何管理基于 AJAX 的 'like/dislike' 功能?

mysql - 如果缓冲区不存在,请将名称+代码添加到缓冲区中?

sql - phpmyadmin 无赖

php - 文本加权到段落的最后一行