$ wpdb返回空,包含日期选择

时间:2017-03-30 13:40:59

标签: php mysql wordpress

我正在使用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)'

我认为我指的是问题,但无法解决问题(我尝试了很多事情)。 有人可以帮帮我吗?谢谢:))

2 个答案:

答案 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