【发布时间】:2026-01-30 07:05:01
【问题描述】:
例如,我创建了两个页面和两个 MySQL 表。
Index.php & citys.php
城市
ID City Country Population
--------------------------------------
1 Amsterdam NL 1500000
2 Rotterdam NL 900000
3 Dusseldorf DE 1800000
cmets
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 页显示 cmets。因此必须编辑查询才能从表 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";
如果表'cmets'有三行,这段代码只显示最后两行而不是第一行:
<?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"] ?>
我不知道为什么第一条记录会留在循环中。
【问题讨论】:
-
为了澄清这个问题,您可以发布您的表定义。我不确定这些表格有什么关系。您在两个表中都有一个 ID,我假设它是主键。但是据我所知,您将城市名称作为城市的外键放入 cmets 表中?如果你能告诉我表表定义,我将能够提供帮助。
-
为什么,我刚刚写了一个非常长的问题和答案,涵盖了这个确切的sort of question,我希望这将有助于阐明连接如何在表上工作以及如何从数据库中的多个表中获取信息!
-
表
citys和文件citys.php拼写错误。应该分别是cities和cities.php。