我想在foreach语句中更新我的数据库,但是它给了我与我输入的最后一个值相同的值。
假设我在上一页有一个循环文本框。
$i = 0;
while($row_recordset = mysql_fetch_array($query_run))
{
echo "<tr>";
<td'><input type='text' name='atten_ave".$i."''></td>
echo "</tr>";
$i++;
}
现在,此代码将获取文本框的每个值,并应从上一页更新数据库。
foreach($_POST as $textbox => $values) {
$sessionbatch = getbatchno('BATCHNO');
$query_update = "UPDATE `grades`
SET
`ATTEN_SUM` = '$values'
WHERE
`BATCHNO` = '$sessionbatch'
";
if(mysql_query($query_update)){
echo 'SUCCESS';
} else{
die(mysql_error());
}
当我检查我的ATTEN_SUM COLUMN时,值是文本框上最后一个输入的SAME基础。
答案 0 :(得分:0)
首先,不遍历$_POST
中的每个值。为您的文本框添加一个附加[]
的标识名称,例如name="atten_ave[]"
。这将在$_POST
内为它们创建一个数组,然后您可以安全地循环遍历它们:
foreach($_POST["atten_ave"] as $textbox => $values) { ....
现在只要getbatchno('BATCHNO');
返回它已经在该循环的生命周期内返回的值,它就会覆盖之前使用该类似值进行的更新。因此,如果它在每次迭代中返回相同的值,则查询将自行覆盖。