複数の部屋を同時に実行できるゲームを作成しています。すべての部屋に関する情報を保持するための MySQL テーブル「部屋」があります。
このテーブルのフィールドには、ルームの数値 ID である「id」と、ルーム内のユーザーの数値 ID である「user1」から「user6」が含まれます。
1 つのページで、すべての部屋についてこれらの情報を使用して何かを行う必要があります。現在のコードは次のようなものです。
//query() is just a function which implements mysqli::query with logging,
// error handling, etc. It uses the same connection on each call so
// there is no overhead of opening a new connection.
$q = query("SELECT id,some_other_fields,user1,user2,user3,...,user6 FROM rooms");
while($r = $q->fetch_assoc()){
//some stuff here
foreach(array($r['user1'],$r['user2'],...,$r['user6']) as $user)
stuff((int)$user);
//some more stuff
}
ご覧のとおり、明示的にユーザーの配列を作成し、それをループ処理する必要があります。
それを行うより良い方法はありますか?
そして、私はこのコードを検討しています:
$q = query("SELECT id,some_other_fields FROM rooms");
while($r = $q->fetch_assoc()){
//some stuff here
foreach(query("SELECT user1,user2,user3,...,user6 FROM rooms WHERE id=".$r['id'])->fetch_assoc() as $user)
stuff((int)$user);
//some more stuff
}
部屋数が通常10~20室程度だとしたら、これでいいでしょうか?