来自多个表的PHP / MySQL Echo

时间:2017-06-15 11:58:43

标签: php mysql sql

对于学校项目,我们必须建立一个与myphp数据库交互的网站。我们想从数据库中的两个不同表中提取数据,但是当我们尝试回显数据时,只显示第一个表中的数据。 两个表是:TICKET和VISITOR 这是我们的代码:

include 'login.php';

        $sql = mysql_query("SELECT * FROM TICKET VISITOR ",$mysql)
        or die("The query failed!");

        mysql_close($mysql)
        or die("Closing the connection failed!");

        if (!$sql) {
            echo 'Could not run query: ' . mysql_error();
            exit;
        }
        echo "<br/>";   
        while ($row = mysql_fetch_row($sql)) {      
            echo $row[0];
            echo " ";
            echo $row[1];
            echo " ";
            echo $row[2];
            echo "<br/>"; 

        }

3 个答案:

答案 0 :(得分:0)

选项1加入

SELECT * FROM TICKET INNER JOIN VISITOR ON NAME;

这里的名称是列名,可能是id

选项2 UNION

SELECT * FROM TICKET UNION SELECT * FROM VISITOR;

答案 1 :(得分:0)

基本上评论已经说明了:你可以使用联接来完成这项任务。但是我觉得你需要的是对选项的正确介绍以及它的意义,所以让我试着帮助你:

第一个问题:你的问题是什么?如果你想独立地从两个表中获取数据,那么你所做的就是分开查询。你或多或少地运行这个:

//first run this query
$sql = mysql_query("SELECT * FROM TICKET ",$mysql)
//Run the query and process the data

//then run this query
$sql = mysql_query("SELECT * FROM VISITOR ",$mysql)
//Process this data, too

您可能真正想要做的是根据来自另一个表的数据从一个表中获取数据。例如,您希望获得有关用户的一些数据,并在一个表中获得他们的电子邮件地址和街道地址,而在另一个表中,您有他们的名字。所以你根据它们都包含的一些信息(密钥)将两个表连接在一起。那你就从

开始吧
TABLE 1: id | email | address
TABLE 2: id | firstname | lastname

以这种形式:

NEW TABLE: id | email | address | firstname | lastname

有不同种类的连接。这个代码可能看起来有点链接:

$sql = mysql_query("SELECT table1.id, table1.email, table1.address, table2.firstname, table2.lastname FROM TABLE1 LEFT JOIN TABLE2 ON (table1.id = table2.id)",$mysql)

如前所述,连接是常见的,并在其他地方正确解释。我发现this是一个很好的教程,但当然所提到的文档(https://dev.mysql.com/doc/refman/5.7/en/join.html)也解释了它可能会更加浓缩。

答案 2 :(得分:-1)

根据您的代码,只需在第一个表后插入逗号(,)。见下文 -

$sql = mysql_query("SELECT * FROM TICKET, VISITOR ",$mysql)
        or die("The query failed!");

如果在第二个表上使用任何外键,也可以使用内连接。

也使用union。