如何为每个循环在php中插入多行?

时间:2018-06-20 10:20:19

标签: php mysql foreach

我正在使用输入框上传多个文件。我想将这些文件添加到mysql表中具有不同id的多行中,但是现在对我有用。

$paye_path=$obj->uploadMultiplePDF($_FILES['paye_inv'],$com_name); 

上面的代码运行正常uploadMultiplePDF功能对我有用。文件进入我的文件夹。

此后,我将调用插入函数:

$query  = $obj->insert_pay_slip_data($paye_path,$com_name);

它对我不起作用。这向我显示以下错误:

Warning: Invalid argument supplied for foreach() in

以下是我在使用foreach循环的插入查询:

public function insert_pay_slip_data($data,$com_name)
            {

                $con = $this->__construct();
                $shareArray = array();
                foreach($data as $shK=>$shVal)
                    {
                        $shareArray[$shK] = $shVal; 
                    } 
                 foreach ($shareArray as $keyshar => $valueshar) 
                 {  
                    $sql = "INSERT INTO `pay_slips`(`paye_id`, `trade_id`, `inv_pdf`, `created_date`, 
                    `created_by`) VALUES (LAST_INSERT_ID(), '".$com_name."','".$valueshar['paye_path']."',NOW(),'".$_SESSION['email']."')";
                    $execute = mysqli_query($con, $sql);
                    return $execute;
                }
            }
  

应在inv_pdf列中输入文件名。如果我上传5个文件   然后应在表格中创建5个不同的行。但是它不起作用。   在foreach循环中我可能是错的。

2 个答案:

答案 0 :(得分:2)

在将值传递给 foreach 之前,您需要确保值的类型为 Array

if(is_array($value)){
   foreach($value as $key => $val){
      // Your code
   }
}else{
   // Do nothing
}

要插入,您可以使用此代码

public function insert_pay_slip_data($data,$com_name){
   $con = $this->__construct();
   $shareArray = array();
   foreach($data as $key=>$value){
       $valueArray = explode(",",$value);
       foreach($valueArray as $index=>$path){
          $sql = "INSERT INTO `pay_slips`(`paye_id`, `trade_id`, `inv_pdf`, `created_date`, `created_by`) VALUES (LAST_INSERT_ID(), '".$com_name."','".$path."',NOW(),'".$_SESSION['email']."')";
          $response = mysqli_query($con, $sql);
          if(!$response){
             // Insertion Failed
          }
       }
   } 
}

答案 1 :(得分:2)

在$ each上循环$ data后,在该行上做一些断点。您可以var_dump查看结构,看到这一行 $shareArray[$shK] = $shVal; 我怀疑您的数据实际上是可以以这种方式使用的数组'".$valueshar['paye_path']."'

也许可以通过在每一行上创建断点来确保数据结构正确,从而使解释更加清晰。另外,由于循环内的return语句,如果需要处理多个子数组,您的函数将过早停止。