不会执行包含变量的查询语句

时间:2013-07-26 作者:brandon-estrella-dev

很困惑为什么下面的代码不起作用。

function discount_State() {
if(is_page(\'cart\')){
global $wpdb;

 $current_user = wp_get_current_user();
 $need = $current_user->ID;

$getID = $wpdb->get_var($wpdb->prepare("SELECT meta_value from table where user_id = $need AND meta_key = \'shipping_state\'"));

echo $getID;

  }
}

add_action(\'woocommerce_before_cart_table\', \'discount_State\');
问题是,当我将user\\u id作为变量放入sql语句中时,代码不会执行。如果我为user\\u id输入一个数字,代码就会工作。我尝试使用gettype来确认$need是一个整数。我已将$need分配给一个数字,即$need=12,代码将执行。

我弄不明白为什么语句不能按编写的方式正确执行。

我尝试将变量写为“$need”和“..need.”,但没有成功。

非常感谢您的帮助!

2 个回复
SO网友:Milo

你没有使用prepare 正确,请参阅the codex 例如。

$wpdb->get_var(
    $wpdb->prepare( 
        "
        SELECT meta_value FROM table
        WHERE user_id = %d
        AND meta_key = \'shipping_state\'
        ",
        $need
    )
);

SO网友:Ben Racicot

我无法测试您的代码,但这就是我过去使用内联PHP变量处理一些SQL的方式。From my notes:

.$longitude.
所以也许

"SELECT meta_value from table where user_id = .$need. AND meta_key = \'shipping_state\'"
我也成功地进行了如下替换:

ASC LIMIT {$radius}
以及

$sql="SELECT * FROM services WHERE service_name=\'$variable\' ";

结束

相关推荐

通过jQuery复选框显示Meta Box

我一直在玩弄Jquery和PHP,我正试图为一支运动队建立一个网站。我创建了一个名为“匹配”的自定义帖子类型,并在其中创建了两个自定义元框。一个用于比赛细节(即主客场)和一个用于比赛统计(进球、投篮等)。我目前拥有的是一个(这个游戏完成了吗)复选框,它在元框详细信息(#dw\\u match\\u Details)中显示/隐藏统计选项(位于Div#meta\\u box\\u stats中)。复选框数据值正在保存,但功能不太正常。如果在加载后将其选中为完成编辑,并且该值设置为“开”,那么当我尝试编辑帖子时