多表查询在Wordpress中不返回任何内容

时间:2013-08-01 09:34:57

标签: mysql wordpress wpdb

我有一个常规的wp_users表和sh_users表。

wp_users表是标准的:ID,user_login,user_pass,user_nicename,user_email,user_url,user_registered,user_activation_key,user_status,display_name

sh_users表有:id(自动增量),user_id(这匹配wp_users ID),user_photo(Varchar 255),user_gender(varchar 255)

现在我这样查询

$results = $wpdb->get_results( "
SELECT user_login, user_email, user_photo
FROM wp_users, sh_users
WHERE wp_users.ID = sh_users.user_id
");

...这是该查询的var转储:

string '
SELECT user_login, user_email, user_photo
FROM wp_users, sh_users
WHERE wp_users.ID = sh_users.user_id
' (length=109)

它什么也没有返回...... +没有错误产生了什么......所以我只是问那里有什么问题?

------ -------- UPDATE

这是wp-users的转储:

INSERT INTO `wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES 
(1, 'pete', 'xxxxxxx', 'pete', 'HIDDEN@gmail.com', '', '2013-07-02 16:42:04', '', 0, 'pete'),
(15, 'test', 'xxxxxx', 'test', 'HIDDEN@gmail.com', '', '2013-07-15 11:17:01', '', 0, 'test'),
(16, 'test1', 'xxxxx', 'test1', 'b.HIDDEN@gmail.com', '', '2013-07-15 20:05:32', '', 0, 'test1'),
(17, 'test5', 'xxxxxx', 'test5', 'HIDDEN.pe@gmail.com', '', '2013-07-16 09:48:57', '', 0, 'test5'),
(23, 'ban', 'xxxxx', 'ban', 'HIDDEN4@gmail.com', '', '2013-07-24 23:24:31', '', 0, 'bane'),
(24, 'ban2', 'xxxx', 'ban2', 'HIDDEN.HIDDEN@gmail.com', '', '2013-07-31 17:41:46', '', 0, 'ban2');

sh_users的mysql转储:

---- Dumping data for table `sh_users`--
INSERT INTO `sh_users` (`id`, `user_id`, `user_registered`, `user_active`, `user_location`, `user_gender`, `user_photo`, `user_meet`, `user_text`, `user_subscribed`) VALUES 
(5, 15, '1373894222', 'Y', '', '', '17-profile.jpg', '', '', ''), 
(6, 16, '1373925933', 'Y', '', '', '17-profile.jpg', '', '', ''), 
(7, 17, '1373975337', 'Y', 'Midtjylland', 'Hende', '17-profile.jpg', 'Nej', '', 'Y'), 
(13, 23, '1375298672', 'N', 'Midtjylland', 'Hende', '23-profile.jpg', 'Nej', '', 'Y'), 
(14, 24, '1375299707', 'N', '', '', 'no-image.png', '', '', '');

2 个答案:

答案 0 :(得分:1)

您需要告诉查询从哪个表中选择结果 -

$results = $wpdb->get_results( "
    SELECT wp_users.user_login, wp_users.user_email, sh_users.user_photo
    FROM wp_users, sh_users
    WHERE wp_users.ID = sh_users.user_id
");

这假设您只想从user_photo表中sh_users,所以如果不正确则更改。

此外,为了排除故障,$ wpdb全局有几个有用的类变量。运行查询后,直接添加此代码 -

echo '<pre>Last query: '; print_r($wpdb->last_query); echo '</pre>';
echo '<pre>Last error: '; print_r($wpdb->last_error); echo '</pre>';
echo '<pre>Last result: '; print_r($wpdb->last_result); echo '</pre>';

如果$wpdb->last_error返回任何内容,希望它可以帮助您查明问题。

答案 1 :(得分:0)

您的查询不正确。你有2个表:

  1. wp_users
  2. sh_users
  3. 太能够链接这两个你必须加入他们。请尝试以下方法:

        $results = $wpdb->get_results( "
         SELECT user_login, user_email, user_photo
         FROM wp_users
         JOIN sh_user 
         ON wp_users.ID = sh_users.user_id
        ");
    

    在此之后,您可以使用WHERE或将JOIN替换为LEFT JOINRIGHT JOIN等。