【问题标题】:PHP array updating multiple Mysql rowsPHP数组更新多个Mysql行
【发布时间】:2013-06-04 12:33:41
【问题描述】:

我在使用数组时更新多个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>

现在点击提交时,直接打开“editing_supplier.php”页面-以下代码如下:

if((isset($_POST['n'])) && (isset($_POST['s'])) && (isset($_POST['o']))){

//Shows up the ID for each Supplier Name
if(is_array($_POST['id'])) {
foreach($_POST['id'] as $id){

//Updates Supplier Name
if(is_array($_POST['n'])) {
foreach($_POST['n'] as $value){
$query = "UPDATE suppliers SET name = '".$value."' where id ='".$id."'";
$result = mysql_query($query);
}
}


//Updates Short_Name
if(is_array($_POST['s'])) {
foreach($_POST['s'] as $value1){
$query = "UPDATE suppliers SET short_name = '".$value1."' where id ='".$id."'";
$result = mysql_query($query);
}
}

//Updates Shipment No.
if(is_array($_POST['o'])) {
foreach($_POST['o'] as $value2){
$query = "UPDATE suppliers SET shipment_no = '".$value2."' where id ='".$id."'";
$result = mysql_query($query);
}
}


//End of for Each id
}
}

实际上是什么,在选择单行更新时..可以完美地工作!但是,当进行多项选择以对其进行更新时,它会弄乱所有值。就像复制最后一个 ID、供应商名称、短名称和发货编号一样。到所有选定的行。

【问题讨论】:

  • @Voitcus 如果缩短代码,有一个for循环函数。

标签: php html mysql arrays foreach


【解决方案1】:

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

foreach($_POST['id'] as $index=>$id) {

跟踪记录的索引,然后不要执行任何其他 foreach 而是:

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

所以你保持 $id 值和其他变量之间的链接。

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 1970-01-01
    • 2013-03-08
    • 2018-10-21
    • 2016-08-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多