PHP file upload in database with Error Handling

PHP file Upload is easy way to handle.
We are demonstrate the file upload in database with Error handling.

Let’s have begin.

Configure php.ini file

; Whether to allow HTTP file uploads.
file_uploads = On

PHP Image Upload Code.

Inside project create directory call images which saved all files over there.
Here is PHP Upload Code.

<?php
   if(isset($_FILES['file_name'])){
      $errors= array();
      $file_name = $_FILES['file_name']['name'];
      $file_size = $_FILES['file_name']['size'];
      $file_tmp = $_FILES['file_name']['tmp_name'];
      $file_type = $_FILES['file_name']['type'];
      $file_array=explode('.',$_FILES['file_name']['name']);
      $file_ext=strtolower(end($file_array));
      
	  
      $extensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 500000) {
         $errors[]='Sorry, your file is too large';
      }
      
      if(empty($errors)==true) {
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action="" method="POST" enctype ="multipart/form-data">
		<input type="file" name="file_name" />
		<input type="submit"/>
		
		<?php if(isset($_FILES['file_name'])){	 ?>
         <ul>
            <li>Sent file: <?php echo $_FILES['file_name']['name'];  ?>
            <li>File size: <?php echo $_FILES['file_name']['size'];  ?>
            <li>File type: <?php echo $_FILES['file_name']['type'] ?>
         </ul>
		<?php } ?>
      </form>
      
   </body>
</html>

move_uploaded_file(string $from, string $to): bool — Moves file to a new location

from : The filename of the uploaded file.
to : The destination of the moved file.

Saved in Database

Create database TABLE in MySQL.

CREATE TABLE `image_upload` (
  `id` int(11) NOT NULL,
  `image_name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
	
ALTER TABLE `image_upload` ADD PRIMARY KEY (`id`);
ALTER TABLE `image_upload` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

Create Connection file.

Config.php

define("DB_HOST", "localhost"); 	// Database Host
define("DB_USER", "root");  		// Database Username
define("DB_PASS", "");				// Database Password
define("DB_NAME", "database_name_of_your"); 	// Database Name

// Database Connection
$connection = mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);

// Check The Connection
if (mysqli_connect_errno() ){
	echo "Database Connection Failed: " . mysqli_connect_error();
	die;
}

mysqli_set_charset($connection,"utf8");

Let’s create code for Upload image and save in MySQL Database

  • Include database connection file.
  • Create image directory
  • Use move_uploaded_file() to upload in image directory
  • Insert image name in MySQL DB.

Upload.php

      include('config.php');
      if(isset($_FILES['file_name'])){
        $errors= array();
        $file_name = $_FILES['file_name']['name'];
        $file_size = $_FILES['file_name']['size'];
        $file_tmp = $_FILES['file_name']['tmp_name'];
        $file_type = $_FILES['file_name']['type'];
	$file_array=explode('.',$_FILES['file_name']['name']);
        $file_ext=strtolower(end($file_array));
        $extensions= array("jpeg","jpg","png");
      
        if(in_array($file_ext,$extensions)=== false){
           $errors[]="extension not allowed, please choose a JPEG or PNG file.";
        }
      
        if($file_size > 500000) {
           $errors[]='Sorry, your file is too large';
        }
      
        if(empty($errors)==true) {
           if(move_uploaded_file($file_tmp,"images/".$file_name)){
			 mysqli_query($connection,"INSERT into image_upload (image_name) VALUES ('".$file_name."')");
			 echo "Success";
           }
         
        }else{
           print_r($errors);
        }
   }

Leave a Reply