更新数据库中特定id的数组值

时间:2015-03-03 09:54:52

标签: php mysql

我正在开发一个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循环而重新更新。所以我试图修复这部分代码。而我正在努力解决它。任何帮助,将不胜感激。

1 个答案:

答案 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的更新,因为根据您的问题,它看起来不会发生变化,因此无需更新。