在sql中存储图像并在php中检索它

时间:2014-06-08 08:07:42

标签: php mysql

我创建了一个表格,我通过" LongBLOB"保存了图像。我需要展示那些图像。 我可以在我的SQL中保存图像但是当我想阅读并显示它们时我有问题, "无法显示,因为它包含错误"

使用此代码将图像保存到我的sql表

<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "imgtest";
$link = mysql_connect($host, $username, $password);
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db($database);
if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) {
    $tmpName = $_FILES['image']['tmp_name'];
    $fp = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
$data = addslashes($data);
fclose($fp);
$namee = $_FILES['image']['name'];
mysql_query("INSERT INTO image(cap,image) VALUES ('$namee','$data')");
}
    ?>

我正在使用此代码从我的sql表中读取和显示图像

 <?php
$con=mysqli_connect("localhost","root","","imgtest");
$wich=$_POST['wich'];
$resoult=mysqli_query($con,"SELECT * FROM image WHERE id LIKE '$wich'");
$imgd = $_GET['img'];
$row = mysqli_fetch_array($resoult);
$image = $row['image'];
header("content-type:image/jpeg");
echo $image;

?>

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

强烈建议将图像存储在文件结构中(服务器,云服务器或其他可访问位置上的目录),并且只在数据库中保留引用,例如URL,文件名或路径路径,以便重新创建实际图像的链接或路径。将图像保存在数据库中是一种不好的做法。

答案 1 :(得分:0)

  1. 您为什么使用mysql_库 - 已弃用。
  2. 您需要存储二进制数据。使用预备陈述。通过这种方式,您可以获得二进制数据。
  3. 从2开始,您可以转储addslashes。这是问题的根源