[英]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.