0

我有一个包含 $player_ids 的数组。该数组是以用户用来选择他的团队的形式获得的。然后我使用 $player_ids 数组查询数据库。像这样:

 if ( isset($_POST['submit']) ) {
    $player_ids = array_map('intval', $_REQUEST['players']);

    var_dump($player_ids);

    $query = 'SELECT `name` 
        FROM `player_info` 
        WHERE `player_id` IN (' . implode(',', $player_ids) . ')';

    $return_names = mysql_query($query) or die(mysql_error());

    while ( $row = mysql_fetch_assoc($return_names) ) {
        $selected[] = $row['name'];
    }

    var_dump($selected);

上面的代码正在运行,当我在浏览器中打开它时,我得到了这个输出 在此处输入图像描述

现在我想从数组 $selected 中提取值(其中包含所选玩家的姓名)并将其上传到数据库。我尝试按如下方式执行此操作:

foreach ($selected as $player){
    $sql = mysql_query('INSERT INTO `team`(`player_name`) VALUES ("$player")') 
    or die(mysql_error());
    print ($player); 
    echo'<br>';         
`   }

我怀疑上面的代码是问题所在。当执行上面的代码时,数据库只包含数组名称本身,而不是数组的实际值。如下图所示: 在此处输入图像描述

如果有人能指出我正确的方向,那么为什么将数组名称而不是它的值保存在数据库中,将不胜感激。

提前致谢。

4

3 回答 3

0

您必须在字符串周围加上双引号,而不是单引号。在单引号字符串中,像 $player 这样的变量不会被它们解释为文本的值替换。

于 2013-10-06T14:12:29.220 回答
0

用这个:

'INSERT INTO `team`(`player_name`) VALUES ("' . $player . '")'

而不是这个:

'INSERT INTO `team`(`player_name`) VALUES ("$player")'
于 2013-10-06T14:12:33.293 回答
0

只需用您的代码替换以下代码,它将有效地工作。

foreach ($selected as $player){
    $sql = mysql_query("INSERT INTO `team`(`player_name`) VALUES ('$player')") 
    or die(mysql_error());
    echo "$player<br />";          
   }
于 2013-10-06T14:20:14.597 回答