我正在开发一个web应用程序,需要让用户更新表的tr中的几个td。到目前为止,我可以获取并显示各个td中的数据库值。但是,当我尝试更新它们时,最后一个tr中最后输入的值会针对表中的所有td进行更新。
下面是我正在尝试的查询部分。所有的值都被认为是数组,因为值是从几个输入框中收集的。
$cno="123";
$c = count($ndv);
for($i=0;$i<$c;$i++)
{
$query_dv="UPDATE device SET cid = '$cno',name = '$ndv[$i]',type = '$tdv[$i]',serialno = '$sdv[$i]',model = '$mdv[$i]',location = '$ldv[$i]' WHERE cid = ".$cno;
$sql_device = mysqli_query($conn, $query_dv) or die(mysqli_error($conn));
}
所以现在我试着用值123,1,1,1,1和123,2,2,2,2更新
我得到123,2,2,2,2和123,2,22,2,2,2。。我确实知道,由于for循环,它会被重新更新。所以我试图修复这部分代码。我正在努力修复它。任何帮助都将不胜感激。
您的问题是,您没有唯一地标识要更新的行,为此,向数据库中添加一个名为id
的列,使其成为主键并自动递增,然后在表中添加包含id的隐藏/禁用输入,并将查询更新为类似的内容
$query_dv="UPDATE device SET name = '$ndv[$i]',type = '$tdv[$i]',serialno = '$sdv[$i]',model = '$mdv[$i]',location = '$ldv[$i]' WHERE id = " . $id[$i];
我删除了cid
的更新,因为从你的问题来看,它看起来没有变化,所以不需要更新。