我正在使用WordPress日历插件,可以添加附加到一个日期的事件。事件存储在自定义数据库中,工作正常。
但是我使用'$wpdb->get_results'
的函数遇到了麻烦
此函数需要日期作为参数。
这是我的代码:
function get_events_list($day) {
global $wpdb
$table = $wpdb->prefix . "mytable";
$events_list = $wpdb->get_results( "SELECT * FROM $table WHERE date = $day)", ARRAY_A );
var_dump($events_list);
}
'var_dump($events_list)'
返回一个空数组,但我在表中有条目。
我尝试了没有参数的函数,直接在sql请求中输入格式良好的日期,如:
function get_events_list() {
$events_list = $wpdb->get_results( "SELECT * FROM $table WHERE date = '2017-03-30')", ARRAY_A );
}
这很有效。
我也做了'var_dump($wpdb->last_query)'
,试图找到发生的事情。
没有参数测试(硬编码'2017-03-30'),工作正常,last_query返回:
'SELECT * FROM wp_mytable WHERE date = '2017-03-30')'
使用动态参数,它返回没有引号的日期:
'SELECT * FROM wp_mytable WHERE date = 2017-03-30)'
我认为我指的是问题,但无法解决问题(我尝试了很多事情)。 有人可以帮帮我吗?谢谢:))
答案 0 :(得分:0)
Hello_ mate,
首先,我不明白这是怎么回事(' SELECT * FROM wp_mytable WHERE date =' 2017-03-30') )查询工作,这个最后一个括号对我来说看起来很奇怪:)。
无论如何,如果你的查询工作正常,那么只需更改:
$events_list = $wpdb->get_results( "SELECT * FROM $table WHERE date = $day)", ARRAY_A );
到
$events_list = $wpdb->get_results( "SELECT * FROM $table WHERE date = '$day')", ARRAY_A );
如你所见,我们只在传递变量时加上引号。
请告诉我这是否适合您。
祝你好运!
答案 1 :(得分:0)
使用引号man -
$events_list = $wpdb->get_results( "SELECT * FROM $table WHERE date = '$day')", ARRAY_A );
没有这些引用它会变成WHERE date = 2017-03-30