1

したがって、1 つのテーブルに CSV のリストがあります。(EG: 1,3,19) ID がそれらのいずれかに一致する他のテーブルからすべてのユーザー名を検索したい。

私は次のようなことができるはずだと感じています:

<?
$query = "SELECT player_ids FROM cast_list WHERE game='".$gameid."' ";
$result = mysql_query($query) or die(mysql_error());
$playerquery = "SELECT username,id FROM players WHERE id IN (".$result.") ORDER BY username;
$player_result = mysql_query($playerquery) or die(mysql_error());
echo "<ul>";
while ($row = mysql_fetch_array($player_result) ) {
  echo "<li>".$row['username']."</li>";
}
echo "</ul>";
?>

しかし、私はそれを機能させることができません。私は何を間違っていますか?

4

2 に答える 2

1

サブクエリを使用することもできます(より高速になります)。

$playerquery = "SELECT username,id 
                FROM players 
                WHERE id IN (SELECT player_ids FROM cast_list WHERE game='".$gameid."') 
                ORDER BY username";

ところで、値gameを引用符 ( ) で囲んでいない整数フィールド' 'の場合。

于 2010-02-02T08:14:05.973 に答える
0

$resultアイデアは正しいですが、を実際の文字列配列に転送する必要があります。

$game_ids = array();
while ($row = mysql_fetch_array($result) ) {
 $game_ids[] = .$row[1];
}

implode配列をカンマで区切られた値に変換するために使用します。

$playerquery = "SELECT username,id FROM players WHERE id IN (" . implode(",",$result) . ") ORDER BY username;
于 2010-02-02T06:24:01.280 に答える