0

所以这是我第一次做在线角色扮演游戏(MMORPG),这是一个基于浏览器的口袋妖怪游戏。

在数据库中,我创建了 2 个表;

1.Pokemons(列;ID#、PokemonName、PokemonType、Level、Exp、HPoints、ATT、DEF) 2.Users(列;ID、全名、电子邮件、用户名、密码)

在注册字段中,他们输入他们的信息(用户、通行证、电子邮件),然后选择一个入门口袋妖怪与之战斗。我的问题是我将如何将其解释为将入门口袋妖怪连接到该用户的 SQL/PHP 命令,反之亦然?

据我所知

选择 * FROM 表名;

但是假设我想选择刚刚注册的那个用户。* 会自动选择该玩家还是会从用户列表中选择所有内容(当前表中有 3 行用户)。

我目前正在阅读 w3schools,但需要一些关于我应该如何处理的实时建议。再次感谢!

thepokemonrpg.x10.mx 如果你们想看看我的意思。

4

1 回答 1

1

这确实会从表中选择所有内容Users

SELECT * FROM Users

*并不意味着所有记录,它只是意味着任何匹配记录的所有列。但是,由于没有过滤器,所有记录都恰好是匹配记录。如果您只想从该表中选择一条记录,您将添加一个WHERE子句:

SELECT * FROM Users WHERE Username='someusername'

有几种不同的方法可以构造 SQL 查询以包含这样的值(因为someusername可能来自变量而不是像那样显式编写)。在构建这些查询时,请注意SQL 注入漏洞。您不希望意外发布一个用户可以编写自己的数据库代码并在您的服务器上执行的网站。

至于加入表格,我目前看不到您可以这样做的方法。这两个表定义了两个不同的实体,但无法相互关联。有几种方法可以做到这一点,具体取决于这些实体的实际关联方式。为此:

  • 口袋妖怪总是只有 0 个或 1 个所有者吗?或者;
  • 一个人总是正好有 0 个或 1 个口袋妖怪吗?或者;
  • 一个口袋妖怪可以有很多主人,一个人可以有很多口袋妖怪吗?

如果第一条语句为真,那么您可以向表中添加一UserId列并将其设为表的外键。这样每个口袋妖怪记录都会表明哪个用户拥有它。PokemonsUsers

如果第二条语句为真,那么您可以向表中添加一PokemonId列并将其设为Users表的外键Pokemons。这样,每个用户记录都将表明当前拥有哪个口袋妖怪。

如果第三条语句为真,那么您需要添加一个连接表来维护这种多对多关系。像这样的东西:

PokemonUsers
------------
Id
PokemonId
UserId

Users此表中的每条记录本质上都是表中的记录和表中的记录之间的链接Pokemons

于 2013-09-16T19:18:00.610 回答