繁体   English   中英

ID列未更新,而其他列正在更新?

[英]ID Column not updating while other columns are?

美好的一天。

这个轻微的错误使我有些烦恼,而我似乎找不到问题所在。 共有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());

错误在哪里?

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

如果您确实想采用这种方式(如果ID重复则会遇到麻烦...),则应将原始ID添加为隐藏字段,以便您知道要更新的记录。

为什么要更改ID是我的第一个问题。

无论如何,如果您确实需要更改ID,则必须保留为此表格生成的原始ID。 一种方法是在表格中放置一个隐藏的输入字段,该字段可以为您提供生成该表格的数据库行的原始ID。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM