Php 从单独的表中选择“仅限于基于CSV列表的结果”
所以我在一个表中列出了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
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的值。