0

だから、オンライン RPG (MMORPG) をするのはこれが初めてで、ブラウザ ベースのポケモン ゲームです。

データベースでは、2 つのテーブルを作成しました。

1.Pokemons (列; ID#、PokemonName、PokemonType、Level、Exp、HPoints、ATT、DEF) 2.Users (列; ID、氏名、電子メール、ユーザー名、パスワード)

登録欄に自分の情報(ユーザー、パス、メールアドレス)を入力し、戦うスターターポケモンを選びます。私の質問は、スターター ポケモンをそのユーザーに、またはその逆に参加させる SQL/PHP コマンドにそれをどのように解釈するかということです。

私の知る限りでは

SELECT * FROM テーブル名;

しかし、登録したばかりのそのユーザーを選択したいとしましょう。* はそのプレイヤーを自動的に選択するだけでしょうか、それともユーザー リストからすべてを選択するのでしょうか (現在、表の 3 行のユーザー)。

今のところw3schoolsを読んでいますが、これをどのように行うべきかについてリアルタイムのアドバイスが必要でした. 再度、感謝します!

thepokemonrpg.x10.mx 意味を知りたいなら。

4

1 に答える 1

1

これにより、実際にテーブルからすべてが選択されます。Users

SELECT * FROM Users

はすべてのレコードを意味するの*ではなく、一致するレコードのすべての列を意味します。ただし、フィルターがないため、たまたますべてのレコードが一致するレコードになります。そのテーブルから 1 つのレコードのみを選択する場合は、WHERE句を追加します。

SELECT * FROM Users WHERE Username='someusername'

そのような値を含むように SQL クエリを作成する方法はいくつかあります (someusername変数から取得される可能性が高く、そのように明示的に記述されていないため)。これらのクエリを作成するときは、 SQL インジェクションの脆弱性に注意してください。ユーザーが独自のデータベース コードを記述してサーバー上で実行できる Web サイトを誤って公開することは望ましくありません。

テーブルに参加することに関しては、現在、それを行う方法がわかりません。これら 2 つのテーブルは 2 つの異なるエンティティを定義しますが、相互に関連付ける方法はありません。これらのエンティティが実際にどのように関連しているかに応じて、いくつかの方法があります。そのために:

  • ポケモンの持ち主は常に正確に 0 人か 1 人ですか? また;
  • 人は常に正確に 0 または 1 匹のポケモンを持っていますか? また;
  • ポケモンには複数の所有者がいて、人には複数のポケモンがいる可能性はありますか?

最初のステートメントが true の場合、テーブルに列を追加して、それをテーブルのUserId外部キーにすることができます。そうすれば、すべてのポケモン レコードが、それを所有しているユーザーを示します。PokemonsUsers

2 番目のステートメントが true の場合、テーブルにPokemonId列を追加して、それをUsersテーブルの外部キーにすることができPokemonsます。そうすれば、すべてのユーザー レコードが、現在所有しているポケモンを示します。

3 番目のステートメントが true の場合、結合テーブルを追加して、この多対多の関係を維持する必要があります。このようなもの:

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

このテーブル内のすべてのレコードは、基本的に、Usersテーブル内のレコードとテーブル内のレコードの間のリンクになりPokemonsます。

于 2013-09-16T19:18:00.610 に答える