gpt4 book ai didi

sql - 数据库 SQL 错误,应该可以工作

转载 作者:搜寻专家 更新时间:2023-10-30 23:43:26 24 4
gpt4 key购买 nike

我正在尝试让我的帖子按半径排序,到目前为止,我一直在努力,我一直在使用 Steve MArks 的以下图文,http://biostall.com/performing-a-radial-search-with-wp_query-in-wordpress

但是下面的代码抛出了 3 个错误。

function location_posts_where( $where )  
{
// Specify the co-ordinates that will form
// the centre of our search
$lat = '50.12335';
$lng = '-1.344453';

$radius = 10; // (in miles)

// Append our radius calculation to the WHERE
$where .= " AND $wpdb->posts.ID IN (SELECT post_id FROM lat_lng_post WHERE
( 3959 * acos( cos( radians(" . $lat . ") )
* cos( radians( lat ) )
* cos( radians( lng )
- radians(" . $lng . ") )
+ sin( radians(" . $lat . ") )
* sin( radians( lat ) ) ) ) <= " . $radius . ")";

// Return the updated WHERE part of the query
return $where;
}

前两个错误是:

Notice: Undefined variable: wpdb in /home/beafweb/public_html/wp-content/themes/BEAF/functions.php on line 106

Notice: Trying to get property of non-object in /home/beafweb/public_html/wp-content/themes/BEAF/functions.php on line 106

我认为这与字符串 AND $wpdb->posts.ID 的这一部分有关,因为它位于第 106 行。

调试日志中的最后一个错误是:

WordPress database error: [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 'IN (SELECT `post_id` FROM `lat_lng_post` WHERE ( 3959 * acos( cos( rad' at line 1]
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'festival-event' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND .ID IN (SELECT `post_id` FROM `lat_lng_post` WHERE ( 3959 * acos( cos( radians(50.12335) ) * cos( radians( 'lat' ) ) * cos( radians( 'lng' ) - radians(-1.344453) ) + sin( radians(50.12335) ) * sin( radians( 'lat' ) ) ) ) <= 10) ORDER BY wp_posts.post_date DESC LIMIT 0, 10

这是否与第一个错误有关?在我看来,它无法连接到数据库。

我试过像以前的线程所说的那样对字符串的 db 部分进行反引号,但这也不起作用。

我对 SQL 的了解不多,但它在我的待办事项列表中,非常感谢任何帮助。

最佳答案

肯定是在连接数据库,不然不会报这样的错。

您的数据库正在尝试解析您的 sql 语句,但您的数据库不知道 $wpdb->posts.id 是什么,因为它是一个 PHP 变量,而您的数据库只使用 SQL。

也许你应该把那个东西连接到你的 sql 语句中,比如 $where .= "AND {$wpdb->posts}.ID IN (SELECT ...

关于sql - 数据库 SQL 错误,应该可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32183501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com