如何在php中插入多行for each循环?

44u64gxh  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(308)

我用输入框上传了多个文件。我想在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循环的insert查询:

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循环中我可能错了。

juzqafwq

juzqafwq1#

在foreach上循环$data之后,在行上做一些断点。你可以 var_dump 它和看到的结构,看到这条线 $shareArray[$shK] = $shVal; 我怀疑你的数据实际上是一个数组,可以这样使用 '".$valueshar['paye_path']."' 可以通过在每一行上创建断点来明确说明,以确保数据结构是正确的。另外,由于循环中的return语句,如果函数需要处理多个子数组,它将提前停止。

gxwragnw

gxwragnw2#

在将值传递给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
          }
       }
   } 
}

相关问题