MySQL查询在WordPress中的其他MySQL查询中

时间:2018-01-08 09:34:50

标签: mysql wordpress nested

我正在为WordPress建立一个联盟系统。我试图从当前用户获取所有客户ID。我在PHPMyAdmin中实现了它,但如果我将它放入WordPress php文件中,它就不起作用。

以下是PHPMyAdmin中的工作代码:

select  user_id,    
        meta_key,
        meta_value 
from    (select * 
        from prefix_usermeta
        where meta_key = 'sponsor_id'
        order by meta_value, user_id) meta_sorted,
        (select @pv := '1') initialisation
where   find_in_set(meta_value, @pv) > 0
and     @pv := concat(@pv, ',', user_id)

上面的查询提出:

user_id     meta_key        meta_value
--------------------------------------
4           sponsor_id      1
9           sponsor_id      1
5           sponsor_id      4
6           sponsor_id      5
7           sponsor_id      6
8           sponsor_id      7

所以这工作得很好!现在我需要将它放入WordPress。我试过这种方式,我认为应该这样:

$downlinequery = $wpdb->get_results("
    select      user_id, meta_key, meta_value 
    from        (select * from " . $wpdb->prefix . "usermeta
    where       meta_key = 'sponsor_id'
                order by meta_value, user_id) meta_sorted,
                (select @pv := '1') initialisation
    where       find_in_set(meta_value, @pv) > 0
    and         @pv := concat(@pv, ',', user_id)");

这是我的第一次尝试。它没用。我尝试的第二件事(它是相同的,只是更清洁一点:

$indownlinesquery = $wpdb->get_results('
    select      * 
    from        ' . $wpdb->prefix . 'usermeta 
    where       meta_key = "sponsor_id" 
    order by    meta_value, user_id');

$downlinequery = $wpdb->get_results("
    select      user_id, meta_key, meta_value 
    from        (" . $indownlinesquery . ") meta_sorted,
                (select @pv := '1') initialisation
    where       find_in_set(meta_value, @pv) > 0
    and         @pv := concat(@pv, ',', user_id)");

我得到一个空数组。

我做错了什么?

谢谢!

0 个答案:

没有答案