Getting error in sql query

时间:2017-09-15 作者:manjeet kumar

我正在使用\\u id()函数将post id保存在变量中。然后我需要从数据库中获取相同post id的数据。因为post id工作正常,但我在执行get result时出错。下面是代码。有人能帮忙吗?

             $a = the_ID();; 
           global $wpdb;
            $data = $wpdb->get_results("SELECT `id`,`guid` FROM `wp_posts` WHERE `post_type` = \'local-offer\' group by `post_author`");


            $result = $wpdb->get_results("SELECT * FROM `wp_postmeta` WHERE `post_id` = ".$a." ");

2 个回复
SO网友:Drupalizeme

You have a typo

$a = the_ID(); 
$data = $wpdb->get_results("SELECT `id`,`guid` FROM `wp_posts` WHERE `post_type` = \'local-offer\' group by `post_author`");
$result = $wpdb->get_results("SELECT * FROM `wp_postmeta` WHERE `post_id` = ".$a." ");
SO网友:Tom J Nowell

您在这里的整个方法都是错误的,所以让我们逐行将其分解:

$a = the_ID(); 
the_ID echo是post ID,这不是正确的函数,请使用get_the_ID(). 请注意,在WP函数中,以开头the_ 输出数据和以开头的函数get_ 返回数据。

$data = $wpdb->get_results("SELECT `id`,`guid` FROM `wp_posts` WHERE `post_type` = \'local-offer\' group by `post_author`");
这里,您将从post表中获取post ID,其中post类型为local-offer, 按文章作者分组,但此SQL查询不必要且速度较慢!你绕过了WP_Cache 因此,它必须从头开始检索所有内容,而且已经有了一个用于执行此操作的API,WP_Query:

$q = new WP_Query( [
    \'post_type\' => \'local-offer\',
    \'orderby\' => \'author\'
    \'order\' => \'ASC\',
    \'fields\' => \'ids\'
] );
$data = $q->posts;
这里我们使用WP_Query 获取帖子,告诉它只获取ID,按作者排序,并且只获取local-offer post类型,请参阅文档以了解更多选项,以及使用它创建用于显示内容的post循环。

$result = $wpdb->get_results("SELECT * FROM `wp_postmeta` WHERE `post_id` = ".$a." ");
这里我们有一个SQL查询来获取给定post ID的所有键值对,但是:

这里没有验证,让您很容易受到SQL注入攻击,已经有了一个简单的API调用您可以将其替换为:

$result = get_post_meta( $a );

结束

相关推荐

仅在生产服务器上使用GET_POSTS/orderby时,POST未按正确的字母顺序或ID顺序显示

我有一个页面,列出了一些自定义帖子,但它们没有按正确的字母顺序显示。作为测试,我还尝试按ID的顺序列出它们,但它们的顺序也不正确。当它被列为ID时,它们看起来好像分成了3组在4000年代的高位数字,低于200,然后是3000,这很奇怪。它在我的本地服务器上运行良好。在Wordpress后端也可以进行订购。当我在1&;上将站点移动到新的托管包时,问题似乎发生了;1、以前是否有服务器特定的订购问题?我制作了两个测试页面,显示了标题和ID(顺序错误)ID顺序的简单列表:http://www.realpat