【发布时间】:2019-08-31 07:58:30
【问题描述】:
我正在创建一个数据库,当用户注册时,他们会选择 3 个他们想玩的游戏。游戏存储在与用户信息表(个人信息)不同的表(游戏信息)中。我正在查询显示的第一个游戏,但我希望为每个用户显示所有三个游戏。我将如何实现显示所有游戏?
我尝试为每个游戏创建不同的变量,但这似乎并没有像我预期的那样工作并且失败了。存储在个人信息表中的游戏存储为 1 或 2 之类的数字。这些数字与 gameinfo 表相关联,并且是每个游戏的主键。
数据库结构
https://imgur.com/a/qee9C1t
$conn = mysqli_connect('localhost', 'root', '', 'esportclub');
$sql = "SELECT user_ID, username, Email, Gender, firstName, lastName, gameName FROM personalinformation, gameinfo WHERE game_id = firstGame";
$result = mysqli_query ($conn, $sql);
if (mysqli_num_rows($result) > 0) {
echo "<table>";
while($row = mysqli_fetch_assoc($result)) {
echo " <tr><td> Name: ". $row{"username"}. " </td><td> Email: ". $row{"Email"}. " </td><td> Gender: ". $row{"Gender"}. "</td>" .
"<td> First Name: ". $row{"firstName"}. " </td><td> First Game: ". $row{"gameName"}. "</td><td> Last Name: ". $row{"lastName"}. "</td>" . "</td></tr>" ;
}
echo "</table>";
}
else{
echo "0 results";
}
$conn->close();
【问题讨论】:
-
我们可以看看你的数据库结构吗?这似乎是"many-to-many` relationship。我会使用参考表通过存储
user_ID和game_id对来关联用户和游戏。然后JOIN相应地把这些表放在一起。 -
我添加了一个指向 imgur 帖子的链接,其中包含我的数据库截图。我也意识到这种关系是多对多的关系。
-
您需要加入 FirstGame、SecondGame 和 ThirdGame 才能获得全部 3 个。另一种选择是将 User_ID 放入 gameinfo 表中并加入 User_ID,或者执行类似 @ 的操作showdev 说。