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

时间:2014-03-25 18:38:08

标签: php html mysql sql

大家好,所以我有一个PHP输入表格来记录一些赛车结果但是让我们说我们有三个不同的赛车手用于相同的racingeventID,但当然每个赛车都会有不同的排名和时间。

我的代码似乎做的是,如果我输入其中三个参赛者的结果,它只需要最后一个条目并重复三次而不是保持它们都是唯一的。我的解释技巧并不是那么好,但也许有人在看到我的代码后可以理解:

INPUT:

$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 INPUT:

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

因此,如果我输入三个独特赛车手的结果,它只需要最后一个结果并输入三次...

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

我的另一个建议是使用括号命名输入以表示它们是数组。而不是使用$ count变量手动赋予它们唯一的名称,只需按下相同的输入

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

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