簡體   English   中英

如何為每個循環在php中插入多行?

[英]How to insert multiple rows in php with for each loop?

我正在使用輸入框上傳多個文件。 我想將這些文件添加到mysql表中具有不同id的多行中,但是現在對我有用。

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

上面的代碼工作正常uploadMultiplePDF功能工作me.files是進入我的文件夾中。

之后,我要調用我的插入函數:

$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循環中可能是錯的。

在將值傳遞給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
          }
       }
   } 
}

在$ each上循環$ data后,請在該行上做一些斷點。 您可以var_dump它並查看結構,看到這一行$shareArray[$shK] = $shVal; 我懷疑您的數據實際上是可以用這種方式使用的數組'".$valueshar['paye_path']."'

通過在每一行上創建斷點以確保數據結構正確,也許可以使解釋更加清晰。 另外,由於循環內的return語句,如果需要處理多個子數組,則函數將過早停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM