【发布时间】:2014-09-18 01:02:21
【问题描述】:
我实际上是第一次尝试使用 JOINS,但我很难让它去。我有两个表...stories 和 wp_users,我正在尝试返回所有故事,并在每个故事中包含来自用户的用户的 display_name。
此代码可以很好地从故事中获取所有结果并显示故事名称和类型:
$results = $wpdb->get_results("SELECT * FROM stories where stories.active = 1");
foreach ($results as $row) {
echo '<tr>';
echo '<td>' . $row->story_name; '</td>';
echo '<td>' . $row->genre; '</td>';
现在我还想包含撰写故事的用户的姓名(wp_users 表中的“display_name”)
在阅读了许多关于加入的网站后,以下方法似乎是最好的,但遗憾的是它没有返回任何结果:
<?php
global $wpdb;
$sql = "SELECT stories.story_name, stories.genre, wp_users.display_name as display FROM
stories LEFT JOIN wp_users ON stories.ID=wp_users.ID where stories.active = 1";
$results = $wpdb->query($sql);
if($results->num_rows) {
while($row = $results->fetch_object()) {
echo "{$row->story_name} {$row->genre} {$row->display}<br>";
}
}
else {
echo 'No results';
}
【问题讨论】:
-
连接可能出错。尝试
$results = $wpdb->query($sql) or die($wpdb->error);以查看错误消息。 -
我确信这是连接的问题,因为它在我的连接语句之前一直返回结果。我添加了模具代码,它只说“没有结果”
-
这只会在用户 ID = 故事 ID 时返回结果我假设你想要一个用户 ID = storycreatorid 或类似的东西
-
是的,我希望用户 ID(也就是 users 表中的“ID”)与 stories 表中的用户 ID(也就是“ID”)相匹配。还有一个故事 ID 字段 SID,但我在这里没有涉及。为什么你说只有 userid = a storyid 才会显示结果
-
在名为 stories 的表中名为 id 的列应该对应于名为 user 的表中名为 id 的列,这似乎很奇怪,但是嘿,这是您的架构,您选择不显示它给我们。