Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中更新多个值_Php_Mysql_Html_Mysqli - Fatal编程技术网

在PHP中更新多个值

在PHP中更新多个值,php,mysql,html,mysqli,Php,Mysql,Html,Mysqli,我正在尝试更新数据库中的多个值。但是,单击Submit按钮时,我一次只能更新一个值 注意:-我只需要知道如何迭代$\u POST变量,而不必硬编码它们,如果它不为NULL,则将它们传递到函数中 关于如何让多个字段提交此文件的任何建议 HTML:- First Name : <input type="text" name="CUSTOMER_FNAME" value="<?php if(isset($_POST['CUSTOMER_FNAME'])) echo

我正在尝试更新数据库中的多个值。但是,单击Submit按钮时,我一次只能更新一个值

注意:-我只需要知道如何迭代$\u POST变量,而不必硬编码它们,如果它不为NULL,则将它们传递到函数中

关于如何让多个字段提交此文件的任何建议

HTML:-

    First Name :
        <input type="text" name="CUSTOMER_FNAME" value="<?php if(isset($_POST['CUSTOMER_FNAME'])) echo htmlspecialchars($_POST['CUSTOMER_FNAME']); ?>" 
          placeholder="<?php echo $customerRegistration->property('CUSTOMER_FNAME');?>" />
    LastName:   
        <input type="text" name="CUSTOMER_LNAME" value="<?php if(isset($_POST['CUSTOMER_LNAME'])) echo htmlspecialchars($_POST['CUSTOMER_LNAME']); ?>" 
          placeholder="<?php echo $customerRegistration->property('CUSTOMER_LNAME');?>" />
    Email:
        <input type="text" name="EMAIL" value="<?php if(isset($_POST['EMAIL'])) echo htmlspecialchars($_POST['EMAIL']); ?>" 
          placeholder="<?php echo $customerRegistration->property('EMAIL');?>" />
注意:-$customerRegistration是类Customer Registration的一个实例,它可以访问update_one($id,$key,$value)方法,并且可以对单个值进行良好的更新

我只需要知道$\u POST变量中的循环如何保持运行,只要它不是空的(编辑了多个值)

Var转储的结果:-

      array(6) { ["CUSTOMER_FNAME"]=> string(4) "UMAR" ["CUSTOMER_LNAME"]=> string(5) "AFTAB" ["EMAIL"]=> string(16) "abcd@hotmail.com" ["PHONE"]=> string(10) "4154561235" ["CUSTOMER_DOB"]=> string(0) "" ["submit"]=> string(14) "Submit Changes" }

如果设置了任何参数,则while循环将成为无止境循环。用简单的if()替换while循环$值变量永远不能为null,最大为空字符串,因此请从if中删除该条件:

    if ($key!="submit") {
        $customerRegistration->update_one($id,$key,$value); 
    }

只是一个建议,如果您使用的是PHP5.6,那么可以使用variadic。请参阅下面的链接。希望这有帮助。:)


您忘记在$\u POST中指定输入的名称。这就是它的目的

$id= $_SESSION['id'];

if (isset($_POST['submit'])){
$input_names = ['CUSTOMER_FNAME', 'CUSTOMER_LNAME', 'EMAIL'];
  for($i=0;$i<count($input_names);$i++){
    foreach ($_POST[$input_names][$i] as $key => $value) {
      if ($value!= NULL && $key!="submit") {
        $customerRegistration->update_one($id,$key,$value); 
      } // end of if
    }  // end of foreach
  } // end of for

} // end of if
$id=$\u会话['id'];
如果(isset($_POST['submit'])){
$input_name=['CUSTOMER_FNAME','CUSTOMER_LNAME','EMAIL'];
对于($i=0;$i$value){
如果($value!=NULL&&$key!=“提交”){
$customerRegistration->update\u one($id,$key,$value);
}//如果结束
}//foreach的结尾
}//结束
}//如果结束


如果不知道
$customerRegistration
是什么,很难说。在$\u帖子中运行一个var\u转储,看看是否所有所需的值都正确there@wogsland但是更新功能运行良好though@PhiterFernandes他们是…我的问题是在他们上面循环,但这不起作用,我从“如果”改为“当”,尽管如此,还是要感谢你的努力。“不起作用”是一个毫无意义的回答。请提供准确的错误信息或描述意外行为!在切换到while之前我试过了。if只更新一个值,只允许一次更新,但现在它忽略了提交null值的事实,这将用null值替换原始值。您不能通过html表单提交php null值。你把东西弄混了。更新代码中没有错误处理。为什么?你能举例说明一下这将如何帮助我遍历$\u POST变量。请看更新,它没有经过测试。我希望您能够理解,不要将数组与可变数量的参数混合在一起。这里不需要变量方法,因为您只需将$\u POST数组作为参数传递。@Shadow是的,我同意您的意见,但如果他想传递多个特定参数,那么变量方法将是理想的。不管怎样,这只是一个建议。为了使它起作用,html中的字段名应该更改为包含一个尾随[]。但问题并不表明多个记录已更新。$\u POST[$input\u names[$i]]=$\u POST['CUSTOM\u FNAME']。如果我把$i放在$\u POST后面,你说的是真的,就像这样:$\u POST[$input\u names][$i]。我通过名称数组循环。foreach($\u POST[$input\u names[$I]]作为$key=>$value)循环意味着您相信每个输入名称在POST中都出现过多次。ye sry:D 3:30 AM,因此正确的是$\u POST[$input\u names][$I]。或者for循环在这里甚至没有用,他所需要做的就是执行foreach($\u POST[$input\u names]作为$key=>$value)
if (isset($_POST['submit']))
{
    function update_one($id, $_POST);

}


function update_one($id, ...$params)
{
    $sql = "UPDATE `customer_registration` SET ";
    foreach ($params as $key => $val){
        if ($value != NULL && $key != "submit") { 
            $sql.= "`{$key}`="."'{$value}' ";
        }
    }
    $sql.= "WHERE `CUSTOMER_ID`="."'{$id}' ";
    mysqli_query($con,$sql);

}
$id= $_SESSION['id'];

if (isset($_POST['submit'])){
$input_names = ['CUSTOMER_FNAME', 'CUSTOMER_LNAME', 'EMAIL'];
  for($i=0;$i<count($input_names);$i++){
    foreach ($_POST[$input_names][$i] as $key => $value) {
      if ($value!= NULL && $key!="submit") {
        $customerRegistration->update_one($id,$key,$value); 
      } // end of if
    }  // end of foreach
  } // end of for

} // end of if