下面代码的唯一问题 - 如果没有选择图像,它会创建一条记录。如果没有选择任何一个图像,则不应该继续执行代码。这种方法适用于单一类型的图像形式。
if(!empty($_FILES['gallery']['name'])) {
for ($i=0; $i < count($_FILES['gallery']['tmp_name']); $i++) {
$gallery_tmp = $_FILES['gallery']['tmp_name'][$i];
$gallery = time().$_FILES['gallery']['name'][$i];
move_uploaded_file($gallery_tmp, "../uploads/$gallery");
$sql = mysqli_query($database->connection, "INSERT INTO gallery (img) VALUES ('$gallery')");
}
}
HTML代码如下:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="gallery[]" class="form-control" multiple="multiple">
<input type="submit" name="submit" value="Update" class="">
</form>
答案 0 :(得分:1)
添加条件,如果图像未上传,则其记录不会被插入数据库。
更新代码:
if(!empty($_FILES['gallery']['name'])) {
for ($i=0; $i < count($_FILES['gallery']['tmp_name']); $i++) {
$gallery_tmp = $_FILES['gallery']['tmp_name'][$i];
$gallery = time().$_FILES['gallery']['name'][$i];
$is_uploaded = move_uploaded_file($gallery_tmp, "../uploads/$gallery");
if( $is_uploaded == TRUE ) {
$sql = mysqli_query($database->connection, "INSERT INTO gallery (img) VALUES ('$gallery')");
}
}
}
答案 1 :(得分:1)
即使您没有发送任何图片,您的$ _FILES [&#39;画廊&#39;] [&#39;名称&#39;]也不是空的,它会包含1个空名称的元素。< / p>
你可以通过检查第一个elemetn是否为空来做坏事:
if(!empty($_FILES['gallery']['name'][0])) {
但是你应该检查它是否在循环中是空的。
也不要通过
来信任用户输入$gallery = time().$_FILES['gallery']['name'][$i];
move_uploaded_file($gallery_tmp, "../uploads/$gallery");
有人可以命名文件test.php并上传你的代码,或者设置名称&#34; ../../ index.php并覆盖你的index.php:)