Wordpress:加入用户,元和外部表格问题

时间:2017-08-27 20:25:52

标签: mysql wordpress

我知道这是微不足道的,但由于某种原因,我遇到了麻烦。我有一个包含用户ID的表,我正在尝试加入wp_users表和wp_usermeta表来获取第一个,最后一个和电子邮件地址。

我可以加入wp_usermeta表和第一个表没问题来获取名字和姓氏。我遇到的麻烦是加入wp_users表来获取电子邮件地址。

$query = $wpdb->get_results
(" 
    SELECT id, u_id, u.meta_value as first_name, u2.meta_value as     last_name, x.ID as user_email
        FROM $table_name s 
        INNER JOIN wp_usermeta u ON s.u_id = u.user_id 
        INNER JOIN wp_usermeta u2 ON s.u_id = u2.user_id 
        INNER JOIN wp_users x ON s.u_id = x.ID
        WHERE
        u.meta_key = 'first_name' AND u2.meta_key = 'last_name' AND x.ID = 'user_email' AND
         id like '%".$search."%'    
");

1 个答案:

答案 0 :(得分:0)

以下是修改后的代码:

$query = $wpdb->get_results
("
    SELECT id, u_id, u.meta_value as first_name, u2.meta_value as last_name, x.user_email
    FROM $table_name s 
    INNER JOIN wp_users x ON s.u_id = x.ID
    INNER JOIN wp_usermeta u ON s.u_id = u.user_id AND u.meta_key = 'first_name'
    INNER JOIN wp_usermeta u2 ON s.u_id = u2.user_id AND u2.meta_key = 'last_name'
    WHERE id like '%".$search."%'
");

我已更改 usermeta 加入以包含两个条件(用户ID和元键值)。但是,如果用户没有设置名字或姓氏,则此查询将不会返回该用户,因此您可以考虑将 INNER JOIN 更改为 LEFT JOIN -meta columns。

而且,主要问题是你错误地使用了Users表。此表与meta表不同,它包含用户电子邮件,用户名和其他内容的实际列,因此您只需从中选择所需内容,因此只有 x.user_email 。< / p>

另外,我不确定WHERE搜索条件,因为ID列通常是数字,所以你最好使用比较,而不是喜欢。如果您的$ search是一个数字且只有一个ID匹配,请将WHERE替换为“ id = $ search ”。