2

たとえば、2つのページと2つのMySQLテーブルを作成しました。

Index.phpcitys.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の回答からのクエリは機能しますが、1つの問題が残っています。

クエリ:

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

テーブル'comments'に3つの行がある場合、このコードは最後の2つだけを表示し、最初の行は表示しません。

<?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"] ?>

最初のレコードがループに残っている理由がわかりません。

4

2 に答える 2

7

このクエリを使用する

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

このタイプの作業にはleftjoinを使用します

于 2012-04-16T10:31:56.320 に答える
4
select * from citys 
left join comments on comments.city = citys.city 
where citys.id=$id
于 2012-04-16T10:30:58.940 に答える