我想将两个表中的数据回显到一个变量。这是我到目前为止的代码:
$sqlCommand = "SELECT * FROM News ORDER BY id DESC LIMIT 10";
$sqlCommand3 = "SELECT * FROM Users ORDER BY id";
$query = mysql_query($sqlCommand) or die(mysql_error());
$query3 = mysql_query($sqlCommand3) or die(mysql_error());
$count = mysql_num_rows($query);
if($count > 1) {
$News .= "";
// How do I add the query3 here?? along side the already existing one
while($row = mysql_fetch_array($query)) {
// some of the $row here are from query one and some are from query 3
$News .= "<a href=\"news?id=".$row['id']."\"><div class=\"news-post\"> <img src=\"".$row['author']."\"><p>".$row['author']."</p> <h2>".$row['title']."</h2></div></a>";
} // close while
答案 0 :(得分:2)
这不是正确的方法,而是尝试使用SQL join。在这种情况下,您需要一个唯一的FULL OUTER JOIN
。
SELECT * FROM News
FULL OUTER JOIN USERS
ON News.id = Users.id
WHERE News.id IS NULL
OR Users.id IS NULL;
这应该为您提供包含两个表中所有列的所有行。根据实际关系,您可能需要一些不同类型的连接(请参阅上一个链接)..但这看起来就像您在示例中尝试完成的那样。
警告:您使用的mysql_*
扩展名为deprecated in PHP 5.5。请使用mysqli_*
或PDO
。
答案 1 :(得分:0)
您的用户表应由oneToMany关联链接到新闻表。 因此,用户编写新闻,并且用户编写新内容。 您需要在SQL查询中添加连接。
$sql = 'SELECT u.username, n.* FROM News n JOIN User u ON n.user_id = u.id';
然后,您只需要执行一个SQL语句并以HTML格式显示结果。
请查看此website。