我用输入框上传了多个文件。我想在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循环中我可能错了。
2条答案
按热度按时间juzqafwq1#
在foreach上循环$data之后,在行上做一些断点。你可以
var_dump
它和看到的结构,看到这条线$shareArray[$shK] = $shVal;
我怀疑你的数据实际上是一个数组,可以这样使用'".$valueshar['paye_path']."'
可以通过在每一行上创建断点来明确说明,以确保数据结构是正确的。另外,由于循环中的return语句,如果函数需要处理多个子数组,它将提前停止。gxwragnw2#
在将值传递给foreach之前,需要确保值的类型是array
要插入,可以使用此代码