我编码了这么远,但我唯一的问题是,当用户上传多张图片时,我无法为同一用户ID保存多行。代码工作得很好,我的意思是多个文件被插入文件系统文件夹/根目录,但数据库中的引用不会退出工作。它只插入第一个上传的文件而不是第二个文件上传。
这是我的代码:
<?php
if(isset($_POST['go'])) {
if(isset($_FILES['file_array'])){
$errors= array();
foreach($_FILES['file_array']['tmp_name'] as $key => $tmp_name ) {
$user = $_SESSION['user_id'];
$file_name = $key.$_FILES['file_array']['name'][$key];
$file_size =$_FILES['file_array']['size'][$key];
$file_tmp =$_FILES['file_array']['tmp_name'][$key];
$file_type=$_FILES['file_array']['type'][$key];
}
$extensions = array("jpeg","jpg","png");
$file_ext=explode('.',$_FILES['file_array']['name'][$key]);
$file_ext=end($file_ext);
$file_ext=strtolower(end(explode('.',$_FILES['file_array']['name'][$key])));
if(in_array($file_ext,$extensions ) === false) {
$errors[]="extension not allowed";
}
if($_FILES['file_array']['size'][$key] > 2097152) {
$errors[]='File size must be less tham 2 MB';
}
$query = array();
$myarray = '';
if(is_array($query)) {
foreach ($query as $row) {
$query[] = '('.$row['ID'].',"'.$row['FILE_NAME'].'", "'.$row['FILE_TYPE'].'", "'.$row['FILE_SIZE'].'")';
}
}
$dir = "users_data/profile/users_posted_data/";
if(empty($errors)==true) {
if(is_dir($dir)==false){
mkdir("$dir/", 0700);
}
if(is_dir("$dir/".$file_name)==false) {
move_uploaded_file($file_tmp,"$dir/".$file_name);
} else {
$new_dir="$dir/".$file_name.time();
rename($file_tmp, "$dir/".$file_name);
}
$query_run = mysqli_query($mysqli, 'INSERT INTO table (ID, FILE_NAME,FILE_SIZE, FILE_TYPE) VALUES '.implode(',', $query));
} else {
print_r($errors);
}
if(empty($error)) {
echo "Success";
}
}
}
?>
答案 0 :(得分:0)
您正在尝试迭代一个空数组。不知道你究竟想做什么,但这无济于事。
$query = array(); // init array
$myarray = '';
if(is_array($query)) { // test that its an array which it obviously is see 2 lines previous
foreach ($query as $row) { // iterate over empty array
// add to the array we are **not** iterating over
$query[] = '('.$row['ID'].',"'.$row['FILE_NAME'].'", "'.$row['FILE_TYPE'].'", "'.$row['FILE_SIZE'].'")';
}
}