Wpdb->Last_Query返回错误查询

时间:2017-11-25 作者:Vincent Decaux

我使用Wordpress 4.8,我想通过元值获得用户。我希望用户在7天内没有连接,并且“email\\u not\\u logged”元为空。

所以我试着:

$users = get_users(array(
    \'meta_query\' => array(
        \'relation\' => \'AND\',
        array(
            \'meta_key\' => \'last_login\',
            //\'meta_value\' => \'DATE_SUB(NOW(),INTERVAL 7 DAY)\',
            \'meta_value\' =>  date(\'Y-m-d H:i\', strtotime(\'-7 days\')),
            \'meta_compare\' => \'<=\',
            \'type\' => \'DATE\',
        ),
        array(
            \'meta_key\' => \'email_not_logged\',
            \'meta_compare\' => \'NOT EXISTS\',
        )
    ))
);
global $wpdb;
echo "<pre>";
print_r($wpdb->last_query);
echo "</pre>";
我不知道为什么,但我得到:

从ma\\u usermeta中选择user\\u id、meta\\u key、meta\\u value,其中user\\u id按umeta\\u id ASC的(82)顺序

我怎样才能有好的查询来测试它?

但是,这是可行的:

$users = get_users(
    array(
        \'meta_key\' => \'last_login\',
        //\'meta_value\' => \'DATE_SUB(NOW(),INTERVAL 7 DAY)\',
        \'meta_value\' =>  date(\'Y-m-d H:i:s\', strtotime(\'-7 days\')),
        \'meta_compare\' => \'<=\',
        \'type\' => \'DATE\',
    )
);
我是否使用了错误的meta\\u查询?

1 个回复
SO网友:janh

get_users() 是一个方便的包装WP_User_Query. 也许你可以直接使用它,例如。

$user_search = new WP_User_Query(
    array(
        \'meta_query\' => array(
            \'relation\' => \'AND\',
            array(
            \'meta_key\' => \'last_login\',
                //\'meta_value\' => \'DATE_SUB(NOW(),INTERVAL 7 DAY)\',
                \'meta_value\' =>  date(\'Y-m-d H:i\', strtotime(\'-7 days\')),
                \'meta_compare\' => \'<=\',
                \'type\' => \'DATE\',
            ),
            array(
                \'meta_key\' => \'email_not_logged\',
                \'meta_compare\' => \'NOT EXISTS\',
            )
        )
    )
);
然后查看它通过打印生成的SQL$user_search->request?

结束

相关推荐

如果点击下拉菜单,如何使用jQuery隐藏/显示元框

我是jQuery的新手,尝试使用jQuery向管理员(新帖子)动态添加文本字段。例如,仅当我从下拉选择菜单中单击“其他”时,文本字段才可见。这是我的“尝试”:jQuery: jQuery(document).ready( function() { jQuery(\'#prefix-nums\').bind(\'change\', function (e) { if( jQuery(\'#prefix-nums\').val() == \'other\') { $(\