我在邮编和距离的基础上搜索类别。我希望得到特定类别的结果,并在该邮编的10英里无线电收音机中播放。在邮政编码和距离的基础上搜索类别
我的表格式
CREATE TABLE IF NOT EXISTS `uk_data` (
`slno` int(10) NOT NULL AUTO_INCREMENT,
`comp_name` varchar(150) DEFAULT NULL,
`comp_no` varchar(50) DEFAULT NULL,
`comp_street` varchar(100) DEFAULT NULL,
`comp_area` varchar(100) DEFAULT NULL,
`comp_post_code` varchar(15) DEFAULT NULL,
`comp_phone` varchar(100) DEFAULT NULL,
`comp_phone1` varchar(100) DEFAULT NULL,
`cat1` varchar(100) DEFAULT NULL,
`cat2` varchar(100) DEFAULT NULL,
`cat3` varchar(100) DEFAULT NULL,
`cat4` varchar(100) DEFAULT NULL,
`cat5` varchar(100) DEFAULT NULL,
`cat6` varchar(100) DEFAULT NULL,
`cat7` varchar(100) DEFAULT NULL,
`cat8` decimal(9,6) DEFAULT NULL,
`cat9` decimal(9,6) DEFAULT NULL,
`cat10` varchar(15) DEFAULT NULL,
PRIMARY KEY (`slno`),
UNIQUE KEY `Phone` (`comp_phone`),
KEY `cat10` (`cat10`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=31717 ;
现在
cat10 is postcode
cat8 is Latitude
cat9 is Longitude
我能计算出的距离,并得到一个纬度和经度的特定英里范围内导致这里是
SELECT cat10, (3959 * acos(cos(radians({$coords['Latitude']}))
* cos(radians(cat8)) * cos(radians(cat9) - radians({$coords['Longitude']}))
+ sin(radians({$coords['Latitude']})) * sin(radians(cat8))))
AS distance FROM uk_data
HAVING distance <= {$radius} ORDER BY distance
$coords = array('Latitude' => "57.149727", 'Longitude' => "-2.094735");
$radius = .5;
$uk_data_radious = uk_data_radious_test($coords,$radius,$q,$pc);
现在我正在试图通过邮编的特定距离获得完整的搜索范围。
SELECT *, (3959 * acos(cos(radians({$coords['Latitude']})) * cos(radians(cat8)) * cos(radians(cat9) - radians({$coords['Longitude']})) + sin(radians({$coords['Latitude']})) * sin(radians(cat8)))) AS distance
FROM uk_data where
cat1 like :cat OR
cat2 like :cat OR
cat3 like :cat OR
cat4 like :cat OR
cat5 like :cat OR
cat6 like :cat OR
cat7 like :cat
HAVING distance <= {$radius}
ORDER BY distance
但这不起作用。我知道有在查询时出现错误,但不知道如何与HAVING
和地点处理该查询一起为3个参数Postcode Distance and categories
错误
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error
or access violation: 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 ':cat OR cat2
like :cat OR cat3 like :cat OR cat4 like :cat OR ' at line 4' in
D:\Winginx\home\****\public_html\functions.php:365 Stack trace: #0
D:\Winginx\home\****\public_html\functions.php(365): PDO->query('SELECT *, (395...') #1
D:\Winginx\home\***\public_html\miles_output.php(14): uk_data_radious_test(Array, 0.5,
'Tool') #2 {main} thrown in D:\Winginx\home\***\public_html\functions.php on line 365
它不工作......我的错误尝试过是 – Harinder
什么是SQL的错误信息? – Adder
错误在问题 – Harinder