我有一个数组$playernames
,它拥有不同的玩家名称。我试图提取值并将它们每次上传到数据库一次查询,如下:
for ($i=0; sizeof($playername) > $i; $i++)
{
$name = $playername[$i];
$query = mysql_query(
"INSERT INTO `team`(`fixture_id`,`player_name`
)
VALUES ($id, '$name')") or die(mysql_error());
}
然而现在发生的事情是在循环中的每个查询之后,数据在数据库的名称列中被覆盖。执行后,当我打开数据库时,只显示数组中包含的最后一个播放器的名称。
我做错了什么?提前致谢。 (对不起,如果这个问题涉及重复,但我没有看到关于上述问题的明确解释)
答案 0 :(得分:3)
您没有为$id
初始化/更改变量fixture_id
的值。
因此,它采用默认值。
如果您的fixture_id
设置为AUTO INCREMENT
,请将您的查询修改为:
$query = mysql_query("INSERT INTO `team`(`player_name`)
VALUES ('$name')") or die(mysql_error());
fixture_id
将自动增加值。
或者从数组$id
设置$playername
。
另外,修改声明:
for ($i=0; sizeof($playername) > $i; $i++)
要:
$len = sizeof($playername);
for ($i=0; $len > $i; $i++)
当您调用PHP函数太多次(等于数组长度)时,这可能会影响性能。
通过这样做,我们使用变量$len
而不是许多函数调用。
希望这适合你。
答案 1 :(得分:0)
变量fixture_id
提供的SQL中的$id
永远不会更改。因此,每个查询都会覆盖前一个查询的值。您可能还需要添加一些逻辑来在每次循环迭代中更改$id
。
答案 2 :(得分:0)
似乎$id
值未设置或始终相同,您可能希望使用$i
代替:
for ($i=0; sizeof($playername) > $i; $i++)
{
$name = $playername[$i];
$query = mysql_query("INSERT INTO `team`(`fixture_id`,`player_name`)
VALUES ($i, '$name')") or die(mysql_error());
}
此外,您可以创建自动增量列,然后只需插入它:
foreach($playername as $name){
$query = mysql_query("INSERT INTO `team`(`fixture_id`,`player_name`)
VALUES ('', '$name')") or die(mysql_error());
}
其中fixture_id
在mysql中自动递增