我有一个包含$ 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);
上面的代码正常工作,当我在浏览器中打开它时,我得到了这个输出
现在我想从array $ selected(包含所选玩家的名字)中提取值并将其上传到数据库。我试着这样做:
foreach ($selected as $player){
$sql = mysql_query('INSERT INTO `team`(`player_name`) VALUES ("$player")')
or die(mysql_error());
print ($player);
echo'<br>';
` }
我怀疑上面的代码是问题所在的地方。当执行上面的代码时,数据库只包含数组名本身,而不包含数组的实际值。如下图所示:
如果有人能指出我正确的方向,为什么数组名称而不是它的值被保存在数据库中,我们将不胜感激。
提前致谢。
答案 0 :(得分:0)
您必须在字符串周围加上双引号而不是单引号。在单引号字符串中,像$ player这样的变量不会被它们在文本中解释的值所取代。
答案 1 :(得分:0)
使用此:
'INSERT INTO `team`(`player_name`) VALUES ("' . $player . '")'
而不是:
'INSERT INTO `team`(`player_name`) VALUES ("$player")'
答案 2 :(得分:0)
只需将以下代码替换为您的代码,它就能有效运行。
foreach ($selected as $player){
$sql = mysql_query("INSERT INTO `team`(`player_name`) VALUES ('$player')")
or die(mysql_error());
echo "$player<br />";
}