用PHP连接两个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

例如,我创建了两个页面和两个MySQL表

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);找出查询获取的值。然后把结果贴在这里,这样我就可以分析发生了什么