-2

$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());  
}

然而现在发生的事情是在循环中的每个查询之后,数据在数据库的名称列中被覆盖。执行后,当我打开数据库时,仅显示数组中包含的最后一个玩家的名称。

我究竟做错了什么?提前致谢。(对不起,如果这个问题涉及重复,但我没有看到关于上述问题的明确解释)

4

3 回答 3

3

您没有初始化/更改变量的$idfixture_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而不是许多函数调用。

希望这对你有用。

于 2013-10-03T07:37:57.407 回答
0

fixture_id你的 SQL 中,由变量提供的$id永远不会改变。因此,每个查询都会覆盖前一个查询的值。您可能还需要添加一些逻辑来更改$id每个循环迭代。

于 2013-10-03T07:28:35.900 回答
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_idmysql中自动递增的位置

于 2013-10-03T07:28:57.540 回答