Так что у меня есть запрос, который работает отлично, если я запускаю его непосредственно в MySQL, но не удается, если я запустил его через Wordpress $ wpdb-> query().Комплексный запрос Wordpress с использованием нескольких запросов
Если я выхожу на страницу $ qry и скопирую и вставляю ее в phpMyAdmin, например, я получаю все результаты, которые я хочу. Однако в Wordpress я получаю сообщение об ошибке.
Ошибка: Ошибка базы данных WordPress: [У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'SELECT *, ROUND (3963.0 * ACOS (SIN (38.580983 * PI()/180) * SIN (lat * PI()/18' на линии 21]
запросов:
CREATE TEMPORARY TABLE tmp_locations_tbl
SELECT post.ID,
post.post_name,
lat_meta.meta_value AS lat,
lng_meta.meta_value AS lng,
address_meta.meta_value AS address
FROM wp_posts AS post,
wp_postmeta AS lat_meta,
wp_postmeta AS lng_meta,
wp_postmeta AS address_meta
WHERE post.ID = lat_meta.post_id
AND post.ID = lat_meta.post_id
AND post.ID = lng_meta.post_id
AND lat_meta.meta_key = 'geo_latitude'
AND lng_meta.meta_key = 'geo_longitude'
AND address_meta.meta_key = 'address'
LIMIT 0, 5000;
SELECT *,
ROUND(3963.0 * ACOS(SIN(38.580983*PI()/180) * SIN(lat*PI()/180) + COS(38.580983*PI()/180) * COS(lat*PI()/180) * COS((lng*PI()/180) - (-121.4931*PI()/180))) , 1)
AS distance
FROM tmp_locations_tbl
HAVING distance < 25
ORDER BY distance ASC
LIMIT 0, 200;
Ясно, что это не нравится «;» - или я так полагаю, Но почему этот пробег отлично непосредственно в MySQL, а не Wordpress Интересно, если я удалю.. ';' из запроса, который отделяет два запроса. Wordpress не возвращает правильные результаты и MySQL, через phpMyAdmin говорит, что это неправильный запрос.
Любая помощь будет оценена.
было бы лучше использовать $ wpdb-> get_results для второго запроса, а не $ wpdb-> запрос ? – ThePengwin
Это зависит от того, что хочет сделать оригинальный плакат.Конечно, если он/она хочет работать с результатом второго запроса, ему лучше использовать '$ wpdb-> get_results();'. – Bjoern
Это сработало отлично. Единственная причина, по которой я не пробовал это в первую очередь, я был обеспокоен тем, что таблица TEMPORARY больше не будет доступна, если я запустил второй запрос после первого. Благодарю. –