WordPress数据库查询中的PHP变量

时间:2013-04-11 作者:drake035

运行以下代码时:

$voucher = \'MK0186\';
$is_in_database = $wpdb->get_results( "SELECT * FROM my_codes_table WHERE code =" . $voucher );
我得到:WordPress数据库错误:[“where子句”中的未知列“MK0186”。我不明白为什么。

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

WPDB prepare方法是您所追求的,因为这将准备好数据以传递给查询,并确保数据与其预期的类型匹配,同时在必要时处理报价。

修复代码可能是。。

$voucher = \'MK0186\';
$is_in_database = $wpdb->get_results( "SELECT * FROM my_codes_table WHERE code = \'$voucher\'" );
。。但你最好这样写。。

$voucher = \'MK0186\';

$is_in_database = $wpdb->get_results( 
    $wpdb->prepare( "
        SELECT * FROM my_codes_table 
        WHERE code = %s", 
        $voucher 
    ) 
);
具有2个数值和一个字符串值的示例查询。

$num1 = 5;
$num2 = 10;
$string = \'Some String!!\';
$query = $wpdb->get_results( 
    $wpdb->prepare( "
        SELECT * FROM sometable 
        WHERE column1 = %d 
        AND column2 = %d
        AND column3 = %s
        ", 
        $num1, $num2, $string
    ) 
);
简而言之。。。您的字符串值没有被引用,这就是问题所在。使用$wpdb->prepare 方法,它会为您解决这个问题。

结束

相关推荐

META_QUERY的XOR功能

我正在尝试解决事件显示的问题。一个事件有它的开始和结束日期,用meta编写。例如,事件开始于(dmY)2013年4月3日,结束于2013年4月8日。使用WP_query 和meta_query 如果我试图在2013年4月9日之前获取数据,我可以排除此事件。同时,这项活动将在每天的间歇期内出现,这也很酷。但是,如果我想在2013年4月2日之前获取数据,我真的不能排除这个事件我使用的时间间隔是这个月,例如从2013年4月1日到2013年4月30日。这是代码在我的特殊情况下,我需要XOR功能meta_relat