如何在代码中使用连接?

时间:2013-10-17 17:20:59

标签: php mysql sql join

我实际上不太确定我是否需要加入。这是学习SQL的唯一一件事,我并不是真的理解或关注,但基本上我有2个表:

games
subgames

在游戏中,我有游戏名称行:

Final Fantasy
Metal Gear Solid
Yu-Gi-Oh

在子游戏中我有subgamesname row:

Metal Gear Rising

他们都有id的自动增量。但是我试图将我的游戏显示为可点击链接,然后刷新页面并显示子游戏。例如,如果我点击Metal Gear Solid,则会转到games.php?subgame=Metal%20Gear%20Solid并显示Metal Gear Rising。这是我到目前为止所拥有的,但它没有显示Metal Gear Rising,可能是因为我将游戏放在一个表中,将子游戏放在另一个表中,而没有相互引用。

所以我的问题是,如何在我的代码中引用它们才能正确显示?

<?php
$sub = $_GET['subgame'];
if($sub){
$result = mysql_query("SELECT $sub FROM games");
 while ($row = mysql_fetch_array($result)) {
printf("%s<br />", $row["subgamename"], $row["subgamename"]);
 }
}
else{
$result = mysql_query("SELECT gamename FROM games ORDER BY gamename");
 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf("<a href='games.php?subgame=%s'> %s </a><br />", $row["gamename"], $row["gamename"]);
 }
}
?>

2 个答案:

答案 0 :(得分:1)

你的查询错了。是什么:

$result = mysql_query("SELECT $sub FROM games"); ????

应该是

mysql_query("SELECT subgamesname FROM subgamesname where gamesName ='".$_GET['subgame']."'");

但是你的参数名称不直观subgame,它应该是gameName,因为你搜索游戏名称

答案 1 :(得分:0)

您可能想要的查询是:

$sub = mysql_real_escape_string($_GET['sub']);
$query = "
    SELECT subgamesname
    FROM subgames s
    JOIN games g ON g.id = s.game_id
    WHERE g.gamesname = '$sub'
";

我假设subgames表有一个game_id列,它是games表的外键。您需要将这些列名替换为您在架构中实际使用的列名。