Php 从单独的表中选择“仅限于基于CSV列表的结果”

Php 从单独的表中选择“仅限于基于CSV列表的结果”,php,mysql,multiple-tables,mutual-exclusion,Php,Mysql,Multiple Tables,Mutual Exclusion,所以我在一个表中列出了CSV的列表。(例如: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 p

所以我在一个表中列出了CSV的列表。(例如:
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>";
?>

这个想法是正确的,但是您需要将
$result
传输到实际的字符串数组:

$game_ids = array();
while ($row = mysql_fetch_array($result) ) {
 $game_ids[] = .$row[1];
}
现在使用
内爆
将数组转换为用逗号分隔的值:

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

想法是正确的,但您需要将
$result
传输到实际的字符串数组:

$game_ids = array();
while ($row = mysql_fetch_array($result) ) {
 $game_ids[] = .$row[1];
}
现在使用
内爆
将数组转换为用逗号分隔的值:

$playerquery = "SELECT username,id FROM players WHERE id IN (" . implode(",",$result) . ") ORDER BY username;
您还可以使用(速度会更快):

顺便说一句,如果
game
是一个整数字段,您没有在值周围加引号(
)。

您也可以使用(这会更快):


顺便说一句,如果
game
是一个整数字段,您没有在该值周围加引号(
)。

内爆(“,”,$game\u id)
内爆(“,”,$game\u id)
我相信OP表明
玩家ID
是玩家ID的CSV。所以这是行不通的。我相信OP表明
player\u id
是一个玩家ID的CSV。所以这不起作用。您的示例不起作用,因为您需要使用mysql\u fetch\u*方法之一从$result资源获取列player\u ID的值。您的示例不起作用,因为您需要使用mysql\u fetch\u*方法之一从$result资源获取列player\u ID的值。