Simple file upload in php mysql database

Server-side file upload can be easily implemented using PHP. There are various ways available to upload image to server and display images on the webpage. Generally, in a dynamic web application, the uploaded image is stored in a directory of the server and the file name is inserted in the database. Later, the images are retrieved from the server based on the file name stored in the database and display on the web page.

The image can be uploaded directly to the database without storing on the server. But it will increase the database size and web page load time. So, it’s always a good idea to upload images to the server and store file names in the database. In this tutorial, we will show you the entire process to upload and store the image file in MySQL database using PHP.

The example code demonstrates the process to implement the file upload functionality in the web application and the following functionality will be implemented.

  • HTML form to upload image.
  • Upload image to server using PHP.
  • Store file name in the database using PHP and MySQL.
  • Retrieve images from the database and display in the web page.

Create Datbase Table

To store the image file name a table need to be created in the database. The following SQL creates an images table with some basic fields in the MySQL database.

CREATE TABLE `images` (
 `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;

Database Configuration (dbConfig.php)

The dbConfig.php file is used to connect and select the MySQL database. Specify the database hostname ($dbHost), username ($dbUsername), password ($dbPassword), and name ($dbName) as per your MySQL credentials.

// Database configuration
$dbHost     "localhost";
$dbUsername "root";
$dbPassword "root";
$dbName     "codexworld";// Create database connection
$db = new mysqli($dbHost$dbUsername$dbPassword$dbName);// Check connection
if ($db->connect_error) {
    die(
"Connection failed: " $db->connect_error);
}
?>

Upload Form HTML

Create an HTML form to allow the user to choose a file they want to upload. Make sure <form> tag contains the following attributes.

  • method="post"
  • enctype="multipart/form-data"

Also, make sure <input> tag contains type="file" attribute.

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select Image File to Upload:
    <input type="file" name="file">
    <input type="submit" name="submit" value="Upload">
form>

Simple file upload in php mysql database

The file upload form will be submitted to the upload.php file to upload image to the server.

Upload File to Server and Store in Database (upload.php)

The upload.php file handles the image upload functionality and shows the status message to the user.

  • Include the database configuration file to connect and select the MySQL database.
  • Get the file extension using pathinfo() function in PHP and validate the file format to check whether the user selects an image file.
  • Upload image to server using move_uploaded_file() function in PHP.
  • Insert image file name in the MySQL database using PHP.
  • Upload status will be shown to the user.
// Include the database configuration file
include 'dbConfig.php';
$statusMsg '';// File upload path
$targetDir "uploads/";
$fileName basename($_FILES["file"]["name"]);
$targetFilePath $targetDir $fileName;
$fileType pathinfo($targetFilePath,PATHINFO_EXTENSION);

if(isset(

$_POST["submit"]) && !empty($_FILES["file"]["name"])){
    
// Allow certain file formats
    
$allowTypes = array('jpg','png','jpeg','gif','pdf');
    if(
in_array($fileType$allowTypes)){
        
// Upload file to server
        
if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
            
// Insert image file name into database
            
$insert $db->query("INSERT into images (file_name, uploaded_on) VALUES ('".$fileName."', NOW())");
            if(
$insert){
                
$statusMsg "The file ".$fileName" has been uploaded successfully.";
            }else{
                
$statusMsg "File upload failed, please try again.";
            } 
        }else{
            
$statusMsg "Sorry, there was an error uploading your file.";
        }
    }else{
        
$statusMsg 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';
    }
}else{
    
$statusMsg 'Please select a file to upload.';
}
// Display status message
echo $statusMsg;
?>

Display Images from Database

Now we will retrieve the uploaded images from the server based on the file names in the database and display images in the web page.

  • Include the database configuration file.
  • Fetch images from MySQL database using PHP.
  • List images from the uploads directory of the server.
// Include the database configuration file
include 'dbConfig.php';// Get images from the database
$query $db->query("SELECT * FROM images ORDER BY uploaded_on DESC");

if(

$query->num_rows 0){
    while(
$row $query->fetch_assoc()){
        
$imageURL 'uploads/'.$row["file_name"];
?> <img src="echo $imageURL?>" alt="" /> }
}else{ 
?> <p>No image(s) found...p
> ?>

Simple file upload in php mysql database

Create Dynamic Image Gallery with jQuery, PHP & MySQL

Conclusion

Here we have shown the most effective way to implement image upload functionality on the website. You can easily extend the file upload functionality as per your requirements. For providing the better user-interface you can integrate the Ajax File Upload functionality.

Upload multiple images using jQuery, Ajax and PHP

Are you want to get implementation help, or modify or enhance the functionality of this script? Submit Paid Service Request

If you have any questions about this script, submit it to our QA community - Ask Question

How can we store uploaded file in database using PHP?

PHP File Upload.
Configure The "php.ini" File. First, ensure that PHP is configured to allow file uploads. ... .
Check if File Already Exists. Now we can add some restrictions. ... .
Limit File Size. The file input field in our HTML form above is named "fileToUpload". ... .
Limit File Type. ... .
Complete Upload File PHP Script..

Can we upload files in MySQL?

Get the file extension using pathinfo() function in PHP and validate the file format to check whether the user selects an image file. Upload image to server using move_uploaded_file() function in PHP. Insert image file name in the MySQL database using PHP. Upload status will be shown to the user.

How do I add a file to a MySQL database?

In the MySQL database, all you do is place the file name. We also place a description of the file in the database. However, to display the file, all we need is the file name. Once we have this, all we have to do in the PHP code is specify the full path to this file, so that it can be displayed.

How can upload file in specific folder in PHP?

Use move_uploaded_file() rather than copy().... uploaded files go to a temp directory and move_uploaded_file() is aware of this; but you also need to specify the folder as a filesystem path, not a web path; and the destination should include a filename as well as a path. ... .
You have not spacified the path. – Amit Verma..