PHP数组更新多个Mysql行

PHP数组更新多个Mysql行,php,html,mysql,arrays,foreach,Php,Html,Mysql,Arrays,Foreach,我在使用数组时更新多个Mysql行时遇到问题,让我们从以下提交表单开始: $n = array(); //Supplier Name $s = array(); //Short Name $o = array(); //Shipment No. $id = array(); //Supplier ID <form action="editing_supplier.php" method="post"> <input type="hidden" value="<?p

我在使用数组时更新多个Mysql行时遇到问题,让我们从以下提交表单开始:

$n = array();  //Supplier Name
$s = array();  //Short Name
$o = array();  //Shipment No.
$id = array(); //Supplier ID

<form action="editing_supplier.php" method="post">
<input type="hidden" value="<?php echo $row['id'] ?>" name="id[]">
<input type="text" value="<?php echo $row['name']?>" required name="n[]">
<input type="text" value="<?php echo $row['short_name']?>" required  name="s[]">
<input type="text" value="<?php echo $row['shipment_no']?>" required  name="o[]">
<input type="submit" value="Confirm Editing" >
</form>

当选择要更新的单行时,它实际上是做什么的..它工作得非常好!但是,当进行多项选择以对其进行更新时,会将所有值弄乱。就像将最后一个id、供应商名称、短名称和装运编号复制到所有选定行一样。

我认为这是由于foreach($id)中的foreach系列造成的。我会写:

foreach($_POST['id'] as $index=>$id) {
要跟踪记录的索引,请不要执行任何其他foreach操作,而是:

$query = "UPDATE suppliers SET name = '".$_POST['n'][$index]."' where id ='".$id."'";

因此,保持$id值和其他变量之间的链接。

@Voitcus如果缩短代码,则有一个for循环函数。
$query = "UPDATE suppliers SET name = '".$_POST['n'][$index]."' where id ='".$id."'";