我实际上是第一次尝试使用JOINS而且我很难接受它。我有两个表...故事和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>';
现在我还要包括编写故事的用户的姓名(&#34; display_name&#34;来自wp_users表)
在阅读了很多关于联接的网站后,下面的方法似乎最好,但遗憾的是它没有返回结果:
<?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';
}
答案 0 :(得分:0)
以下是一些可能有用的建议:
$wpdb->get_results()
,而在第二个代码段中有$wpdb->query()
。返回值和参数含义可能有所不同。num_rows
确实来自$results
。这里(http://codex.wordpress.org/Function_Reference/wpdb_Class)表示表达式为$wpdb->num_rows
。 (您可以通过在网站上搜索'num_rows'找到它,它会向下滚动。)LEFT JOIN
对MySQL是可以接受的。句法层面似乎没有问题。此文档http://codex.wordpress.org/Function_Reference/wpdb_Class可能有助于明确代码。
答案 1 :(得分:0)
知道了!
<?php
global $wpdb;
$results = $wpdb->get_results("SELECT stories.story_name, stories.genre,
wp_users.display_name FROM stories LEFT JOIN wp_users ON stories.ID=wp_users.ID where
stories.active = 1");
if ($results) {
echo '<table>';
echo '<tr>';
echo '<td><b>Story Name</b></td>';
echo '<td><b>Genre</b></td>';
echo '<td><b>Last User on this Website to See</b></td>';
echo '</tr>';
foreach ($results as $row) {
echo '<tr>';
echo '<td>' . $row->story_name; '</td>';
echo '<td>' . $row->genre; '</td>';
echo '<td>' . $row->display_name; '</td>';
echo '</tr>';
}
echo '</table>';
}
?>