其他列的ID列不更新?

时间:2012-04-19 00:48:21

标签: php mysql html

美好的一天。

这个小错误一直困扰着我,我似乎无法找到问题所在。有3列:id,last_name和first_name。后者2更新得很好,但id列不断恢复原来的值。

好的,所以这里是我的代码的一些片段:

while($row = mysql_fetch_array($result))
{

    echo "<tr>";  
    echo "<td><input type='checkbox' name ='doc_list[]' value =". $row ."></input></td>
          <td><input type='text' maxlength='9' id='id' name ='id' value =". $row['id'] ."></input></td> 
          <td><input type='text' maxlength='32' id='last_name' name ='last_name' value =". $row['last_name'] ."></input></td>
          <td><input type='text' maxlength='32' id='first_name' name ='first_name' value =". $row['first_name'] ."></input></td>
          <td><input type='submit' value='Update'/></td>
          <td><div id='message'></div></td>";

}   

然后当表单提交时:

//Extracts the information from the form
$id = clean($_POST['id']);
$first_name = clean($_POST['first_name']);
$last_name = clean($_POST['last_name']);

//Input validations
//include("../php/validate_insertion.php");


//Updates doctor info
$query1="UPDATE doctors 
     SET id= '$id', last_name='$last_name', first_name='$first_name'
     WHERE id='$id'";
$result = mysql_query($query1) or die(mysql_error());

哪里出错?

2 个答案:

答案 0 :(得分:2)

我真的没有改变ID的逻辑,但问题是你没有保留原来的id。您需要在where条件下更新原始记录,而不是恰好具有新ID的记录。

如果你真的想这样做(如果有重复的ID,你会遇到麻烦...),你应该将原始ID添加为隐藏字段,以便你知道要更新的记录。

答案 1 :(得分:1)

为什么你改变身份证是我的第一个问题。

在任何情况下,如果您确实需要更改ID,则必须获取生成此表单的原始ID。这样做的一种方法是在表单中放入一个隐藏的输入字段,该字段可以为您提供生成此表单的数据库行的原始ID。

PS:从安全角度来看,接受用户表单中的id并不是一个好主意,具体取决于您要更新哪一行。如果有人将隐藏的字段ID更改为其他内容,该怎么办?