所以我有一个查询,如果我直接在 MySQL 中运行它就可以正常工作,但如果我通过 Wordpress $wpdb->query() 运行它就会失败。
例如,如果我将 $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 说这是一个不正确的查询。
任何帮助,将不胜感激。