使用动态列名的wpdb查询?

时间:2014-09-17 作者:alex

如何在$wpdb查询中动态设置列名?我试过了

$which_column = \'phone\';
$data_check = $wpdb->get_var("SELECT \'.$which_column.\' FROM wp_shopping_preferences WHERE wp_user_id = \'$id\'");
但它不起作用。然而,这确实有效

$data_check = $wpdb->get_var("SELECT phone FROM wp_shopping_preferences WHERE wp_user_id = \'$id\'");
我需要为我正在构建的短代码动态设置列

当做

1 个回复
最合适的回答,由SO网友:Eric Holmes 整理而成

从外观上看,这只是一个语法错误。您正在使用" 打开字符串,然后\' 关闭它。使用此选项:

$which_column = \'phone\';
$data_check = $wpdb->get_var("SELECT " . $which_column . " FROM wp_shopping_preferences WHERE wp_user_id = \'$id\'");
有趣的事实:使用双引号时("), 您可以直接在字符串中插入变量,而无需关闭它~

$which_column = \'phone\';
$data_check = $wpdb->get_var("SELECT $which_column FROM wp_shopping_preferences WHERE wp_user_id = \'$id\'");

EDIT

我注意到你$id 在正在添加的查询的末尾**如果这是用户提交的值you must use [$wpdb->准备`]1 确保正确消毒。见下文:

$which_column = \'phone\';
$data_check = $wpdb->get_var( 
    $wpdb->prepare( 
        "SELECT $which_column FROM wp_shopping_preferences WHERE wp_user_id = %d",
        $id 
    )
);
额外的换行符是不必要的,但只是为了证明发生了什么。我更换了$id 具有%d, 将进行类型转换$id 作为数值。退房$wpdb->prepare 查看更多选项。

结束

相关推荐

WP_QUERY循环、参数中的偏移量和PAGINATE_LINKS--这些可以一起使用吗?

我有一个页面,其中第7类的前4篇帖子显示了它们自己的查询和风格。然后我有一个小框,我想显示第7类的其余帖子,并使用分页。基本上,我想让分页只对长方体起作用,同时将前四个固定。问题是我不想在框中复制前4个,因此我在查询中使用偏移量。不幸的是,当我这样做时,分页中的每一页都显示了与前一页相同的帖子。我能做些什么来避免这种情况? <?php $paged = ( get_query_var( \'paged\' ) ) ? absint( get_query_var( \'