将多个PHP行放入数据库,不断重复最后一行,而不是唯一的


putting multiple php rows into database, keeps repeating last one, not unique

大家好,我有一个php输入表单来记录一些比赛结果,但假设我们有三个不同的赛车手为同一个racingeventID,但当然每个人的排名和时间都不同。

我的代码似乎是这样做的,如果我输入三个这些赛车的结果,它只取最后一个条目并重复它三次,而不是保持它们都是唯一的。我的解释技术不是很好,但也许有人可以在看到我的代码后理解:

输入:

$reID = $_GET['reID'];
$result = mysql_query("SELECT * FROM RaceEventRacer WHERE reID = $reID");
$count = 0;
while ($row = mysql_fetch_assoc($result))
{
    $count++;
    $reID = $row['reID'];
    $racerID = $row['racerID'];
    echo "<tr>";
    echo "<td>$reID<input type='hidden' name='reID$count' value='$reID'>"; 
    echo "<td>$racerID<input type='hidden' name='racerID$count' value='$racerID'>"; 
    echo"<td><input type='text' name='rank$count'>";
    echo"<td><input type='text' name='timetaken$count'>";   
}
echo "<input type='hidden' name='count' value='$count' />";
SQL输入:

$count = $_POST['count'];
for($i=0; $i<$count; $i++){
    $rank[] = $_POST['rank'.$count];
    $timetaken[] = $_POST['timetaken'.$count];
    $reID[] = $_POST['reID'.$count];
    $racerID[] = $_POST['racerID'.$count];
}
$count_racerID = $count;
for($i=0;$i<$count_racerID;$i++){
    $_rank= mysql_escape_string($rank[$i]);
    $_timetaken= mysql_escape_string($timetaken[$i]);
    $_reID= mysql_escape_string($reID[$i]);
    $_racerID= mysql_escape_string($racerID[$i]);
    $sql = mysql_query("INSERT INTO RaceResults (rank, timetaken, reID, racerID) VALUES ('$_rank', '$_timetaken', '$_reID', '$_racerID')");
    $result = mysql_query($sql);
}

如果我输入三个不同赛车的结果,它只取最后一个结果并输入三次。

在填充数组时出现错别字。此外,输入的第一个ID索引从1开始,因为它在使用之前是递增的。应该是:

for($i=1; $i<=$count; $i++){
    $rank[] = $_POST['rank'.$i];
    $timetaken[] = $_POST['timetaken'.$i];
    $reID[] = $_POST['reID'.$i];
    $racerID[] = $_POST['racerID'.$i];
}

请注意$count++语句应该放在While循环的末尾。否则,计数将从1开始,而后端数组将从0开始。

我的另一个建议是使用括号来命名输入,以表示它们是数组。不需要使用$count变量手动为它们指定唯一的名称,只需将它们推送到相同的输入

    echo "<td>$reID<input type='hidden' name='reID[]' value='$reID'>"; 

这意味着相应地更新后端代码。一个forEach循环就足够了。