Я пытаюсь получить этот пример от Google для работы с моим кодом.
https://developers.google.com/maps/articles/phpsqlsearch_v3
Я использую библиотеку Meekro PHP MySQL, поскольку она облегчает другие запросы, которые я делаю.
Это та часть, которая дает мне ошибки.
$query = sprintf("SELECT address, name, lat, lng, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat),
mysql_real_escape_string($radius));
$result = mysql_query($query);
Я использую следующий код:
$results = DB::query("SELECT address, name, lat, lng, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
$center_lat,
$center_lng,
$center_lat,
$radius);
Я всегда получаю следующую ошибку, используя следующие параметры:
?lat=37&lng=-122&radius=25
#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 '37'') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(''-122'') ) + si' at line 1
Даже когда я пытаюсь выполнить запрос в phpMyAdmin, я получаю ту же ошибку.
Удалить кавычки вокруг% s:
$results = DB::query("SELECT address, name, lat, lng, ( 3959 * acos( cos( radians(%s) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(%s) ) + sin( radians(%s) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < %s ORDER BY distance LIMIT 0 , 20",
$center_lat,
$center_lng,
$center_lat,
$radius);
Других решений пока нет …