简体   繁体   中英

Image Uploading to mysql database using PHP

I'm trying to upload image to mysql table. When image selected it's working fine. But without selecting image it's display error message. How can i fix it?

Warning: file_get_contents(): Filename cannot be empty in C:\\wamp\\www\\firstdialnew\\firstdial\\adhandler.php on line 23

$stype=$_POST['stype'];
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);

if($stype="")
{
echo "Please fill all the details";
}else{
$sql=mysql_query("INSERT INTO ads
                            (sid,stype,image,image_name)
                            VALUES(NULL,'$stype','$image','$image_name')");
echo "Details Successfully send";
}

you need to check/validate that image is upload or not try something like that

if (!empty($_FILES['image']['name'])) {
   $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
   $image_name = addslashes($_FILES['image']['name']);
}else{
   $image = '';
   $image_name = '';
}

You are not checking for $_FILES try this

$stype=$_POST['stype'];
if(isset($_FILES['image']) ) {
    $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
    $image_name = addslashes($_FILES['image']['name']);
}else{
    $image = '';
    $image_name = '';
}

I will suggest you to upload file in a folder and store the file name in mysql table.

Here is how you can do that

$file_path = "uploads/";

if(isset($_FILES['image']) ) {
   $file_name  = basename( $_FILES['uploaded_file']['name']);
   $file_path = $file_path . $file_name;

   //You should validate the image before upload
   move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path);
 }else{
    $image = '';
    $image_name = '';
}

//now store file name in db
$sql=mysql_query("INSERT INTO ads
                        (sid,stype,image,image_name)
                        VALUES(NULL,'$stype','$file_name','$image_name')");

Follow my experience, you should save image into folder (ex : public/upload/images/image_name.png) AND save image path into database. That is simple and database's size is not large

Did you add :

    <form method="POST" enctype="multipart/form-data">

Into your form (enctype="multipart/form-data")

try this :

 $stype=$_POST['stype'];
     $image_name ='';
     $image='';
     if(!empty($_FILES['image'])) {
     $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
     $image_name = addslashes($_FILES['image']['name']);
      } 
      if($stype="")
      {
      echo "Please fill all the details";
      }else{
       $sql=mysql_query("INSERT INTO ads
                        (sid,stype,image,image_name)
                        VALUES(NULL,'$stype','$image','$image_name')");
         echo "Details Successfully send";
       }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM