我正在开发一个 Web 应用程序,我需要让用户在一个表的 tr 中更新几个 tds。截至目前,我可以获取并显示相应 td 中的数据库值。但是当我尝试更新它们时,表中所有 td 的最后一个 tr 中最后输入的值都会更新。
以下是我正在尝试的查询部分。所有值都被视为数组,因为值是从多个输入框中收集的。
$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 循环而重新更新。所以我正在尝试修复这部分代码。我正在努力修复它。任何帮助,将不胜感激。
最佳答案
你的问题是你没有唯一地标识你想要更新的行,要这样做,请在你的数据库中添加一个名为 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
的更新,因为从你的问题来看它看起来没有变化,所以不需要更新。
关于php - 更新数据库中特定 ID 的数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28828738/