无法从wpdb查询中获得预期结果

时间:2012-11-21 作者:John Chandler

我第一次尝试使用$wpdb进行直接DB查询时遇到了一些问题。我正在使用WordTwit插件,并尝试检索该插件创建的当前帖子的短url扩展名。这是我的代码:

global $wpdb;
$short = $wpdb->get_var("SELECT url FROM $wpdb->prefix.\'tweet_url\' WHERE post_id = \'$post->ID\' ");
据我所知,这应该在“post\\u id”等于当前帖子id的行中提取“url”的值。然而,当我回显$short进行测试时,它并没有返回任何内容。我错过了什么?

2 个回复
SO网友:Tyler Carter

我知道我可能看不到全貌,但在你提供的摘录中没有全球化$post.

global $wpdb, $post;
$short = $wpdb->get_var("SELECT url FROM $wpdb->prefix.\'tweet_url\' WHERE post_id = \'$post->ID\' ");

SO网友:Chris_O

语法错误修复后,(请参见下文),您的查询将告诉WordPress您需要tweet\\u url表中的url列,其中post\\u id列是帖子的id。

更正的语法:

$wpdb->get_var( "SELECT url FROM $wpdb->tweet_url WHERE post_id = $post->ID " );
这将导致:

WordPress database error: [Table \'wp_tweet_url\' doesn\'t exist]
查看插件中的代码,您可以在这里看到他们是如何创建表的,http://plugins.trac.wordpress.org/browser/wordtwit/trunk/wordtwit.php?rev=581895#L1033.

正确的表名是tweet\\u url,因此正确的语法是:

$sql = $wpdb->prepare( "SELECT url FROM " . $wpdb->prefix . "tweet_urls WHERE post_id = %d",  get_the_ID() );

$result = $wpdb->get_var( $sql );

var_dump( $result );

结束

相关推荐

在$wpdb查询中获取多个自定义字段值

Possible Duplicate:How to query posts based on lat-lng coordinate as post meta? 我想创建一个$wpdb查询,以选择当前坐标(lat和$long)附近最近的位置(自定义post类型),但我无法同时获得两个自定义字段值(wpfc纬度和wpfc经度)。。。如何更改查询以获得经度?SELECT $wpdb->posts.ID, $wpdb->posts.post_title, $wpdb->terms.name,