我的数据库中有一个名为wp_q33uds_campaign
的表。我的申请中有一个查询如下:
$usr = $wpdb->get_var('SELECT user_id FROM wp_q33uds_campaign WHERE date1 = 1451546940');
现在,此查询会从表中返回user_id
,date1
列设置为1451546940
。
现在,在我的应用程序的某个地方,我有一个名为$dd
的变量,其中$dd
设置为1451546940
。但是,当我按如下方式修改上述查询时:
$usr = $wpdb->get_var('SELECT user_id FROM wp_q33uds_campaign WHERE date1 = $dd);
它返回NULL
值。这里看起来有什么不对?有没有办法在$wpdb
查询中传递PHP变量?
答案 0 :(得分:2)
您应该使用edit: function (e) {
var model = e.model;
if (model.Local) {
model.set("OperationContext", "IsAdded");
}
}
方法正确转义变量以防止语法错误,最重要的是防止SQL注入攻击 - 请参阅WordPress文档中的Running General Queries。您还应该使用$wpdb->prepare()
属性来确保查询中的正确表格前缀。
您在日期中看到的值实际上是Unix时间戳,您需要使用$wpdb->prefix
将其转换为字符串;
date()
答案 1 :(得分:1)
使用
$usr = $wpdb->get_var("SELECT user_id FROM wp_q33uds_campaign WHERE date1 = '$dd'");
或
$usr = $wpdb->get_var('SELECT user_id FROM wp_q33uds_campaign WHERE date1 = \''.$dd.'\'');
答案 2 :(得分:0)
首先,您错过了近距离报价。
其次,当你使用单引号时PHP取字符串内的字符串,所以你的$ dd不用作变量用作字符串。
有很多方法可以解决这个问题。
$usr = $wpdb->get_var("SELECT user_id FROM wp_q33uds_campaign WHERE date1 = $dd");
或者
$usr = $wpdb->get_var('SELECT user_id FROM wp_q33uds_campaign WHERE date1 = ' . $dd);
最好的方法是使用sprintf
http://php.net/manual/en/function.sprintf.php
$sql = sprintf( 'SELECT user_id FROM wp_q33uds_campaign WHERE date1=%s', $dd);
$usr = $wpdb->get_var($sql);
答案 3 :(得分:-1)
如果要评估PHP var,则需要使用双引号。否则你需要像你的
那样用你的字符串连接你的var$usr = $wpdb->get_var('SELECT user_id FROM wp_q33uds_campaign WHERE date1 = ' . $dd);