如何使用PHP代码将图像上传到MySQL数据库
我正在尝试从HTML表单保存图像到我的数据库中。 我写了PHP代码来完成这个任务。 该程序不会产生任何错误信息,也不会在MySQL数据库中插入图像数据。 请检查一下。 在这里,我分享了我的代码摘录。
/*------------------- IMAGE QUERY ---------------*/ $file =$_FILES['image']['tmp_name']; if(!isset($file)) { echo 'Please select an Image'; } else { $image_check = getimagesize($_FILES['image']['tmp_name']); if($image_check==false) { echo 'Not a Valid Image'; } else { $image = file_get_contents ($_FILES['image']['tmp_name']); $image_name = $_FILES['image']['name']; if ($image_query = mysql_query ("insert into product_images values (1,'$image_name',$image )")) { echo $current_id; //echo 'Successfull'; } else { echo mysql_error(); } } } /*----------------- IMAGE QUERY END ---------------------*/ <form action='insert_product.php' method='POST' enctype='multipart/form-data' ></br> File : <input type='file' name= 'image' > </form>
错误消息您在SQL语法中有错误; 检查与您的MySQL服务器版本相对应的手册,在第1行附近使用正确的语法
首先,你应该检查你的图像列是否是BLOBtypes的 !
我对你的SQL表一无所知,但是如果我会以我自己为例。
我们得到了字段id
(int), image
(blob)和image_name
(varchar(64))。
所以代码应该看起来像这样(假设ID总是'1',让我们使用这个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! :("; }
你在许多方面做错了。 不要使用mysql函数 – 它们已被弃用! 使用PDO或MySQLi 。 您还应该考虑将文件位置存储在磁盘上。 使用MySQL来存储图像被认为是Bad Idea™。 使用像数据一样的大数据处理SQL表可能会有问题。
你的HTML表单也不符合标准。 它应该是这样的:
<form action="insert_product.php" method="POST" enctype="multipart/form-data"> <label>File: </label><input type="file" name="image" /> <input type="submit" /> </form>
边注:
处理文件并将它们存储为BLOB时,必须使用mysql_real_escape_string()
来转义数据,否则将导致语法错误。
只是几个细节 :
- 添加mysql字段
`image` blob
- 从图像获取数据
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
- 插入图像数据到数据库
$sql = "INSERT INTO `product_images` (`id`, `image`) VALUES ('1', '{$image}')";
- 将图像显示在网上
<img src="data:image/png;base64,'.base64_encode($row['image']).'">
- 结束
如何插入数据库?
<html> <head> <title>Uploads</title> </head> <body> <input type="file" name="file_array[]"/> <input type="file" name="file_array[]"/> <input type="file" name="file_array[]"/> <input type="submit" name="submit"/> </body> </html> <?php if(isset($_FILES['file_array'])) { $name_array = $_FILES['file_array']['name']; $tmp_name_array = $_FILES['file_array']['tmp_name']; $type_array = $_FILES['file_array']['type']; $size_array = $_FILES['file_array']['size']; $error_array = $_FILES['file_array']['error']; $dir = "slideshow"; for($i = 0; $i<count($tmp_name_array); $i++) { if(move_uploaded_file($tmp_name_array,"slideshow/".$name_array)) { echo $name_array[$i]."Upload is complete<br>"; } else { echo"Move_uploaded_file function failed for".$name_array[$i]."<br>"; } } } ?>