php - 用 PHP 连接两个 MySQL 表

标签 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        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 "'>

citys.php 使用此代码显示来自 MySQL 的数据:

<?php
    include "connect.php";
    if(!isset($cmd))
    {
        if($_GET["cmd"]=="menu" || $_POST["cmd"]=="menu")
        {
            if (!isset($_POST["submit"]))
            {
                $id = $_GET["id"];
                $sql = "SELECT * FROM citys WHERE id=$id";
                $result = mysql_query($sql);
                $row = mysql_fetch_array($result);
?>

<?php echo $row["City"] ?>
<br><br>

<?php echo $row["Country"] ?>
<br><br>
<?php echo $row["Population"] ?>

到这里为止,一切都显示出来并且工作正常。

但我还想在第 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);
?>

但没有任何作用。

我该如何解决这个问题?


VIPIN JAIN 的答案中的查询有效,但还有一个问题:

查询:

$sql = "SELECT * FROM citys LEFT JOIN comments ON comments.city=citys.city WHERE citys.id=$id";

如果表 '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"] ?>

我不知道为什么第一条记录留在循环中。

最佳答案

使用这个查询

$sql = "SELECT * FROM citys LEFT JOIN comments ON comments.city=citys.city WHERE citys.id=$id";

对这种类型的工作使用 leftjoin

关于php - 用 PHP 连接两个 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10172411/

相关文章:

php - Symfony 2 Acls insertClassAces

php - 如何声明全局变量并初始化

php - OpenCV & PHP & XAMPP

php - Apache 重写规则和 POST 数据

mysql - 向 SELECTED 字段名称 mysql 添加一个数字

mysql - 如何使用 SQLAlchemy 向 mysql 中的表或列添加注释?

sql - LEFT OUTER JOIN with LIMIT

mysql - 使用 GROUP BY 时优先考虑 WHERE IN( )

MYSQL 按月选择结果计数

python - 如何连接 2 个数据框并基于过滤器 pyspark 添加新列