来自多个表的PHP/MySQL回显
对于学校项目,我们必须创建一个与myphp数据库交互的网站。我们希望从数据库中的两个不同表中提取数据,但是当我们尝试回显数据时,只显示第一个表中的数据。 我们有两张桌子:票和访客 这是我们的代码:来自多个表的PHP/MySQL回显,php,mysql,sql,Php,Mysql,Sql,对于学校项目,我们必须创建一个与myphp数据库交互的网站。我们希望从数据库中的两个不同表中提取数据,但是当我们尝试回显数据时,只显示第一个表中的数据。 我们有两张桌子:票和访客 这是我们的代码: include 'login.php'; $sql = mysql_query("SELECT * FROM TICKET VISITOR ",$mysql) or die("The query failed!"); mysql_close($mys
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/>";
}
包括“login.php”;
$sql=mysql\u查询(“从票据访问者中选择*,$mysql)
或者死(“查询失败!”);
mysql\u close($mysql)
或者死亡(“关闭连接失败!”);
如果(!$sql){
echo“无法运行查询:”。mysql_错误();
出口
}
回声“
”;
而($row=mysql\u fetch\u row($sql)){
echo$行[0];
回声“;
echo$行[1];
回声“;
echo$行[2];
回声“
”;
}
选项1加入
从票证内选择*加入访客姓名代码>
名称这里是一个列名,可能是id
选择2工会
SELECT * FROM TICKET UNION SELECT * FROM VISITOR;
基本上,注释已经说明了这一点:您可以将连接用于此任务。然而,我认为您需要的是正确地介绍这些选项及其含义,因此,让我尝试帮助您:
第一个问题:你的问题是什么?如果您想独立地从两个表中获取数据,那么两个表所要做的就是分别进行查询。您或多或少会运行以下命令:
//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)
如前所述,联接是常见的,在其他地方也有适当的解释。我发现这是一个很好的教程,但当然提到的文档()也解释了它,可能更简洁。根据您的代码,只需在第一个表后插入逗号(,)。见下文-
$sql = mysql_query("SELECT * FROM TICKET, VISITOR ",$mysql)
or die("The query failed!");
如果第二个表上使用了任何外键,也可以使用内部联接
也可以使用union 供参考。它们不再得到维护。看到了吗?相反,了解并使用or-将帮助您决定哪一个最适合您。这不是您从多个表中选择数据的方式。Ticket和VISITOR是您的两个不同的表吗?您应该阅读joining<代码>从票证访问者中选择*是不可能的
您已经在选择查询中使用了join。不要这样做,因为对于两个有1K行的表,您将得到1M行输出。是的,您是对的,但我根据查询用户帖子回复了。