0

私は自分のサイトでチャットルームをプログラミングしていますが、phpは本当に初めてです。ゲームの同じチームでプレイし(ユーザーが別のチームに一緒に参加できることを知っている)、同じエリアで作業しているユーザーとチャットできるようにしたいと思います。

アカウントユーザーのテーブル、エリアのテーブル、ゲームのテーブルの3つのテーブルがあると仮定します。

次のようなクエリを返す関数があります

function myfunction($userid){

$games_user=mysql_query('select theme from games where games.userid="'.$userid.'"');  
$games_theme = mysql_fetch_array($games_user);

$sql = ("select  userid, username, area.userid 

    from account 
        left join area
            on account.userid = area.userid    

        left join games
            on account.userid = games.userid

    where account.userid <> '".mysql_real_escape_string($userid)."' and '".(in_array(games.theme,$games_theme))."' and area.userid=1 
 );
 return $sql;
}

再フォーマット:

$sql = "
SELECT userid, username, area.userid 
FROM account 
LEFT JOIN area ON account.userid = area.userid    
LEFT JOIN games ON account.userid = games.userid
WHERE account.userid <> '".mysql_real_escape_string($userid)."'
  AND '".(in_array(games.theme,$games_theme))."'
  AND area.userid = 1 
";

しかし、それは実際には機能しません。構文に問題があると思います。in_arrayがどのようにインデックス付けされているのか、そしてそのクエリをより簡単に行う方法がわかりません。

誰か助けてもらえますか?

4

1 に答える 1

2

あなたが何をしているのかまだ完全にはわかりませんが、これがあなたが望んでいることだと思います。これは、単一のクエリで実行できます。

<?php
function myfunction($userid){
    $id = mysql_real_escape_string($userid);
    $sql = "SELECT  userid, username, area.userid 
        FROM account 
            LEFT JOIN area
                ON account.userid = area.userid    
            LEFT JOIN games
                ON account.userid = games.userid
        WHERE account.userid<>'$id' AND area.userid=1
            AND games.theme IN (SELECT theme FROM games WHERE games.userid='$id')
    ";
    return $sql;
}
?>
于 2012-07-15T18:54:25.960 に答える