How to upload images into MySQL database using PHP code

前端 未结 3 1931
清酒与你
清酒与你 2020-11-22 15:21

I am trying to save images in my database from HTML form. I have written PHP code to accomplish this task. The program is not generating any error message, but also not inse

相关标签:
3条回答
  • 2020-11-22 15:58

    Just few more details

    • Add mysql field

    `image` blob

    • Get data from image

    $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));

    • Insert image data into db

    $sql = "INSERT INTO `product_images` (`id`, `image`) VALUES ('1', '{$image}')";

    • Show image to the web

    <img src="data:image/png;base64,'.base64_encode($row['image']).'">

    • End
    0 讨论(0)
  • 2020-11-22 15:59

    Firstly, you should check if your image column is BLOB type!

    I don't know anything about your SQL table, but if I'll try to make my own as an example.

    We got fields id (int), image (blob) and image_name (varchar(64)).

    So the code should look like this (assume ID is always '1' and let's use this mysql_query):

    $image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
    $image_name = addslashes($_FILES['image']['name']);
    $sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')";
    if (!mysql_query($sql)) { // Error handling
        echo "Something went wrong! :("; 
    }
    

    You are doing it wrong in many ways. Don't use mysql functions - they are deprecated! Use PDO or MySQLi. You should also think about storing files locations on disk. Using MySQL for storing images is thought to be Bad Idea™. Handling SQL table with big data like images can be problematic.

    Also your HTML form is out of standards. It should look like this:

    <form action="insert_product.php" method="POST" enctype="multipart/form-data">
        <label>File: </label><input type="file" name="image" />
        <input type="submit" />
    </form>
    

    Sidenote:

    When dealing with files and storing them as a BLOB, the data must be escaped using mysql_real_escape_string(), otherwise it will result in a syntax error.

    0 讨论(0)
  • 2020-11-22 16:18

    This is the perfect code for uploading and displaying image through MySQL database.

    <html>
    <body>
    <form method="post" enctype="multipart/form-data">
    <input type="file" name="image"/>
    <input type="submit" name="submit" value="Upload"/>
    </form>
    <?php
        if(isset($_POST['submit']))
        {
         if(getimagesize($_FILES['image']['tmp_name'])==FALSE)
         {
            echo " error ";
         }
         else
         {
            $image = $_FILES['image']['tmp_name'];
            $image = addslashes(file_get_contents($image));
            saveimage($image);
         }
        }
        function saveimage($image)
        {
            $dbcon=mysqli_connect('localhost','root','','dbname');
            $qry="insert into tablename (name) values ('$image')";
            $result=mysqli_query($dbcon,$qry);
            if($result)
            {
                echo " <br/>Image uploaded.";
                header('location:urlofpage.php');
            }
            else
            {
                echo " error ";
            }
        }
    ?>
    </body>
    </html>
    
    0 讨论(0)
提交回复
热议问题