带有Prepare()的WPDB SQL查询返回变量,而不是DB值

时间:2013-09-16 作者:Mike Stumpf

我已经试着让它发挥作用有一段时间了,而我似乎无法靠自己取得任何进展。它似乎可以作为一个普通的SQL查询正常工作,但不在WP框架内使用prepare(). 基本上,我试图在SQL查询中插入一个PHP变量,但函数不是返回我选择的值,而是返回变量的值。

我搜索过其他有相同问题的人,但大多数人都在处理LIKE和%通配符的问题。我想不出我的问题是什么。

我使用的是bbPress变量,它是论坛id。

任何帮助都将不胜感激。

global $wpdb;
$countquery = $wpdb->get_var($wpdb->prepare(
"SELECT meta_value FROM $wpdb->postmeta 
WHERE meta_key = \'_bbp_forum_subforum_count\' 
AND post_id=%d", bbp_forum_id()));
echo $countquery;

2 个回复
最合适的回答,由SO网友:Milo 整理而成

功能bbp_forum_id() 将直接echo 它的值,您要使用bbp_get_forum_id() 这将return 在API调用上下文中使用的值。

SO网友:Pat J

尝试以下操作:

global $wpdb;
$forum_id = bbp_get_forum_id();
$countquery = $wpdb->get_var( 
    $wpdb->prepare(
       "SELECT meta_value FROM $wpdb->postmeta 
        WHERE meta_key = \'_bbp_forum_subforum_count\' 
        AND post_id=%d",
    $forum_id 
    ) 
);
echo $countquery;
由于某种原因bbp_forum_id()$wpdb->prepare() 正在返回0 或非十进制值。(一些快速实验表明[sprintf()](http://php.net/sprintf), 其中$wpdb->prepare() 基于,将插值0 如果%d 值不是数字。)

Edited -- 使用bbp_get_forum_id() 根据米洛的回答。

结束

相关推荐

如何修改此$wpdb查询以接受POST状态数组

我正在使用来自this accepted 答案,它获取自定义字段键的所有值(十字柱)。如何修改它以允许post状态数组?function get_meta_values( $key = \'\', $type = \'post\', $status = \'publish\' ) { global $wpdb; if( empty( $key ) ) return; $r = $wpdb->get_col( $wpd