比如我创建了两个页面和两个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/