たとえば、2つのページと2つの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の回答からのクエリは機能しますが、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"] ?>
最初のレコードがループに残っている理由がわかりません。