How to upload multiple files and store in the MySQL database using PHP
In this article, you will learn how to upload multiple files and store them in the MySQL database using PHP. It is very easy to upload a single file and store it in the database, but sometimes there is also a need to upload and store multiple files, like uploading multiple images, PDFs, docs and so on. Multiple file upload allows the user to choose multiple files at once and upload them all to the server. Uploading multiple files is the most commonly used functionality for the web application.
First, let's create an HTML form to upload multiple files and store them in the MySQL database. The enctype='multipart/form-data' form attributes allow files to be sent through post.
It is required to write 'multiple' in file input to select and upload multiple files. Here, we have used a file array in the input name to send multiple files in the post.
<form method='post' action='#' enctype='multipart/form-data'>
<div class="form-group">
<input type="file" name="file[]" multiple>
</div>
<div class="form-group">
<input type='submit' name='submit' value='Upload' class="btn btn-primary">
</div>
</form>
Next, create a database to store files. You can either copy and paste this CREATE statement into your database or use your existing one.
CREATE TABLE `files` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`file_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`uploaded_on` datetime NOT NULL,
`status` enum('1','0') COLLATE utf8_unicode_ci NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Next, we have written the database connection code. Make sure to replace 'hostname', 'username', 'password' and 'database' with your database credentials and name.
$conn = mysqli_connect('hostname', 'username', 'password', 'database');
//Check for connection error
if($conn->connect_error){
die("Error in DB connection: ".$conn->connect_errno." : ".$conn->connect_error);
}
Next, we have written code to check submitted files, save files in the local directory, and store the uploaded file path in the database. The move_uploaded_file() function of PHP uploads images to the server.
if(isset($_POST['submit'])){
// Count total uploaded files
$totalfiles = count($_FILES['file']['name']);
// Looping over all files
for($i=0;$i<$totalfiles;$i++){
$filename = $_FILES['file']['name'][$i];
// Upload files and store in database
if(move_uploaded_file($_FILES["file"]["tmp_name"][$i],'upload/'.$filename)){
// Image db insert sql
$insert = "INSERT into files(file_name,uploaded_on,status) values('$filename',now(),1)";
if(mysqli_query($conn, $insert)){
echo 'Data inserted successfully';
}
else{
echo 'Error: '.mysqli_error($conn);
}
}else{
echo 'Error in uploading file - '.$_FILES['file']['name'][$i].'<br/>';
}
}
}
Complete Script
Here, we have merged the above codes to upload multiple files to the database.
<?php
//Database Connection
$conn = mysqli_connect('hostname', 'username', 'password', 'database');
//Check for connection error
if($conn->connect_error){
die("Error in DB connection: ".$conn->connect_errno." : ".$conn->connect_error);
}
if(isset($_POST['submit'])){
// Count total uploaded files
$totalfiles = count($_FILES['file']['name']);
// Looping over all files
for($i=0;$i<$totalfiles;$i++){
$filename = $_FILES['file']['name'][$i];
// Upload files and store in database
if(move_uploaded_file($_FILES["file"]["tmp_name"][$i],'upload/'.$filename)){
// Image db insert sql
$insert = "INSERT into files(file_name,uploaded_on,status) values('$filename',now(),1)";
if(mysqli_query($conn, $insert)){
echo 'Data inserted successfully';
}
else{
echo 'Error: '.mysqli_error($conn);
}
}else{
echo 'Error in uploading file - '.$_FILES['file']['name'][$i].'<br/>';
}
}
}
?>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h1>Select Files to Upload</h1>
<form method='post' action='#' enctype='multipart/form-data'>
<div class="form-group">
<input type="file" name="file[]" id="file" multiple>
</div>
<div class="form-group">
<input type='submit' name='submit' value='Upload' class="btn btn-primary">
</div>
</form>
</div>
</body>
</html>

Related Articles
PHP sanitize input for MySQLPHP random quote generator
PHP String Contains
PHP calculate percentage of total
PHP Fix: invalid argument supplied for foreach
Locking files with flock()
PHP Display PDF file from Database
How to read CSV file in PHP and store in MySQL
Generating word documents with PHP
PHP SplFileObject Examples
How to Upload a File in PHP
Simple PHP email form
Password reset system in PHP
HTTP authentication with PHP
PHP file cache library
PHP get current directory url
How to prevent CSRF attack in PHP
Forgot Password Script PHP mysqli database
PHP Contact Form with Google reCAPTCHA
HTML Form Validation in PHP
Insert in database without page refresh PHP