我正在使用输入框上传多个文件。我想将这些文件添加到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循环中我可能是错的。
答案 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语句,如果需要处理多个子数组,您的函数将过早停止。