我在郵編和距離的基礎上搜索類別。我希望得到特定類別的結果,並在該郵編的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