How to upload images into MySQL database using PHP code
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.
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
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>