为两个表声明$ row

时间:2014-04-16 17:41:52

标签: php html mysql

我想将两个表中的数据回显到一个变量。这是我到目前为止的代码:

$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

2 个答案:

答案 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