我正在开发一个Web应用程序,我需要让用户在表的tr中更新几个tds。截至目前,我可以在相应的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,1和123,2,2,2,2,2
我得到123,2,2,2,2,2和123,2,2,2,2,2 ..我知道它因为for循环而重新更新。所以我试图修复这部分代码。而我正在努力解决它。任何帮助,将不胜感激。
答案 0 :(得分:1)
您的问题是您没有唯一标识您想要更新的行,这样就可以在数据库中添加一个名为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
的更新,因为根据您的问题,它看起来不会发生变化,因此无需更新。