用PHP连接两个MySQL表
例如,我创建了两个页面和两个MySQL表用PHP连接两个MySQL表,php,mysql,join,Php,Mysql,Join,例如,我创建了两个页面和两个MySQL表 Index.php&citys.php 城市 ID City Country Population -------------------------------------- 1 Amsterdam NL 1500000 2 Rotterdam NL 900000 3 Dusseldorf DE 1800000 ID City
Index.php
&citys.php
城市
ID City Country Population
--------------------------------------
1 Amsterdam NL 1500000
2 Rotterdam NL 900000
3 Dusseldorf DE 1800000
ID City Name Comment
---------------------------------
1 Dusseldorf Jack Great city!
2 Dusseldorf John Beautiful
3 Rotterdam Emy Love it
评论
ID City Country Population
--------------------------------------
1 Amsterdam NL 1500000
2 Rotterdam NL 900000
3 Dusseldorf DE 1800000
ID City Name Comment
---------------------------------
1 Dusseldorf Jack Great city!
2 Dusseldorf John Beautiful
3 Rotterdam Emy Love it
目前,我只使用以下表格citys
:
index.php
链接到citys.php
:
<a href='citys.php?cmd=menu&id=";echo $row['id'];echo "'>
在这里之前,一切都很顺利
但我也想在第2页上显示评论。因此,必须对查询进行编辑,才能从表comments
中获得正确的数据
我尝试了互联网上我自己编辑的不同例子,如:
<?php
include "connect.php";
if(!isset($cmd))
{
if($_GET["cmd"]=="menu" || $_POST["cmd"]=="menu")
{
if (!isset($_POST["submit"]))
{
$id = $_GET["id"];
$sql = "SELECT citys.*, comments.* FROM citys, comments WHERE citys.id=$id AND comments.city=citys.city";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
?>
如果表“comments”有三行,则此代码仅显示最后两行,而不显示第一行:
<?php
while($row = mysql_fetch_array($result)) {
echo "<br><br>";
echo $row['name'];
echo "<br>";
echo $row['comment'];
}
?>
如果我尝试这个,它只显示第一行
<?php echo $row["name"] ?>
<br>
<?php echo $row["comment"] ?>
我不知道为什么第一条记录会留在循环中。使用此查询
select * from citys
left join comments on comments.city = citys.city
where citys.id=$id
$sql = "SELECT * FROM citys LEFT JOIN comments ON comments.city=citys.city WHERE citys.id=$id";
在这类工作中使用leftjoin稍微澄清一下这个问题。您可以发布您的表定义吗。我不确定这些表有什么关系。您在两个表中都有一个ID,我假定它是主键。但是从我所看到的,你把你的城市名称作为城市的外键放在评论表中?如果你能给我看一下表的定义,我可以帮你。为什么,我刚刚写了一个非常长的问题和答案,涵盖了这个确切的问题和答案,我希望这将有助于澄清联接如何在表上工作,以及如何从数据库中的多个表中获取信息!表
citys
和文件citys.php
拼写错误。应分别为和。您可以使用左外连接进行调节。这有助于您在找不到匹配行时不会出错。查询正常,但还有一个问题:如果表“注释”有3行这段代码只显示最后两行,但不显示第一行:如果我尝试
它只显示第一行。也许您应该对上面的内容使用2个查询,因为连接将使程序占用的内存超过所需的内存。因此,为了获得更好的选择,可以进行多个查询。i、 e.对于城市表和评论表。如果我使用这个
它会以正确的顺序显示所有评论。我不知道这是不是正确的方法,但对我来说很有效!谢谢你的帮助。关于这个问题我还有一个问题。在查询示例之后,似乎没有加载字段“city”:给出国家,只使用var_dump($row);找出查询获取的值。然后把结果贴在这里,这样我就可以分析发生了什么