Ayrı bir tablodan bir CSV listesine göre sadece sonuçlarına sınırlayıcı SEÇ

2 Cevap php

So I have a list of CSVs in one table. (EG: 1,3,19 ) I want to search out all of the usernames from the other table where the ids match any of those.

Ben böyle bir şey yapmak mümkün olmalıdır gibi hissediyorum:

<?
$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>";
?>

ama işe alınamıyor. Ben yanlış ne yapıyorum?

2 Cevap

Ayrıca subquery (ki daha hızlı olacaktır) kullanabilirsiniz:

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

game bir tamsayı alanı ise Btw tırnak (' ') değer etrafında koyduk yok.

Fikrin doğru olduğunu, ancak gerçek bir dize dizisi için $result aktarmak gerekiyor:

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

Şimdi implode virgül ile bir virgülle ayrılmış değerler dizisi dönüştürmek için kullanıyor:

$playerquery = "SELECT username,id FROM players WHERE id IN (" . implode(",",$result) . ") ORDER BY username;