我在news-create.php文件中有这个代码,我有一个表单在我的新闻表中插入数据。
一切正常,除非我的图片多次上传,当我插入新闻时。
我得到了这个错误:
注意:未定义的偏移量:$ext = substr($gb['name'][$i],-3);
注意:未定义的偏移量:if(in_array($gb['type'][$i],$extPerm))
你可以试着理解这些通知吗?
这就是我所拥有的:
在下面的代码之前,我存储在$ f数组中,用户在我的插入新闻表单中写入并上传我的新闻单个图像,然后我执行插入:
$insNews = $pdo->prepare("INSERT INTO news (img, title, category, content) VALUES (?, ?, ?, ?)");
$insNews->bindParam(1,$f['img']);
$insNews->bindParam(2,$f['title']);
$insNews->bindParam(3,$f['category']);
$insNews->bindParam(4,$f['content']);
$insNews->execute();
$insNews = $pdo->lastInsertId();
我得到了我的lastInsertId,因为我还想为我当前的新闻创建一个图库,所以我需要将当前插入的新闻与我的画廊表关联起来,所以我想到这个解决方案,我认为应该有效。
然后如果我的插入返回成功,我将进行多次上传,并在我的表库中插入当前id的库:
if($insNews->rowCount() >=1){
if($_FILES['gb']['tmp_name']){
$count = count($_FILES['gb']['tmp_name']);
$gb = $_FILES['gb'];
$folder = '../galery/';
$year = date('Y');
$month = date('m');
if(!file_exists($folder.$year)){
mkdir($folder.$year,0755);
}
if(!file_exists($folder.$year.'/'.$month)){
mkdir($folder.$year.'/'.$month,0755);
}
for($i=0;$i<=$count;$i++){
$ext = substr($gb['name'][$i],-3);
$name = $folder.$year.'/'.$month.'/'.$idlast.'-'.$i.time().'.'.$ext;
$extPerm = array('image/jpeg', 'image/pjpeg', 'image/png', 'image/gif');
if(in_array($gb['type'][$i],$extPerm)){
uploadImage($gb['tmp_name'][$i], $name, '800', $folder);
//and then I will do my insert into galery table here
$insGal = $pdo->prepare("INSERT INTO gallery (img, id_news) VALUES (?, ?)");
$insGal->bindParam(1,$name);
$insGal->bindParam(2,$idlast);
}
}
}
if($f['status'] == '1'){
echo 'Sucess inserting news';
}
else{
echo 'Sucess intersing news, but you need to active it.';
}
答案 0 :(得分:2)
将$i <= $count
更改为$i < $count
。当数组包含3个元素时,索引从0
运行到2
。你走得太远了。
答案 1 :(得分:1)
除了@Barmar的回答。它看起来像你在为你的循环计算错误的数组。你的代码:
$count = count($_FILES['gb']['tmp_name']);//shouldn't this be just $_FILES['gb'] as that's what you're iterating over?
$gb = $_FILES['gb'];
//
for($i=0;$i<$count;$i++){ //$count contains the length of $_FILES['gb']['tmp_name']