我如何显示图像存储为blob数据类型在mysql与php


How do i display images stored as blob data type in mysql with php?

如何显示mySQL数据库中存储的BLOB图像?到目前为止,它所尝试的是:1. 创建一个新的php函数/文件来获取图片(getpicture.php)。2. 在html中,我有以下代码:

<img src="getpicture.php?id=2" border ="0" height="250" width="250" /> 


/*below is the getpicture.php*/
<?php
@ $db = new MySQLi('localhost','root','','myDatabase');
if(mysqli_connect_errno()) {
    echo 'Connection to database failed:'.mysqli_connect_error();
    exit();
}
if(isset($_GET['People_Id'])) {
    $id = mysqli_real_escape_string($_GET['People_Id']);
    $query = mysqli_query("SELECT * FROM 'people' WHERE 'People_Id' = '$id'");
    while($row = mysqli_fetch_assoc($query)) {
        $imageData =$row['image'];
    }
    header("content-type: image/jpeg");
    echo $imageData;
    echo $id;
}
else {
    echo "Error!";
    echo $id;
}
?>

代码有什么问题?请帮助!

我回答了我自己的问题,它现在可以工作了。

下面是getpicture.php:

<?php
$db = new MySQLi('localhost', '', '', 'mydatabase');
if ($db->connect_errno) {
    echo 'Connection to database failed: '. $db->connect_error;
    exit();
}
if (isset($_GET['id'])) {
$id = $db->real_escape_string($_GET['id']);
$query = "SELECT `Picture` FROM member WHERE `Id` = '$id'";
$result = $db->query($query);
while($row = mysqli_fetch_array($result)) {
    $imageData = $row['Picture'];
    header("Content-type:image/jpeg");
    echo $imageData;
}

}?>

检索上面getpicture.php的php脚本如下所示:

echo '<img src="getpicture.php?id=' . htmlspecialchars($_GET["id"]) . '"border ="0" height="250" width="250" />';

谢谢大家的帮助

这是错误的:

$query = mysqli_query("SELECT * FROM 'people' WHERE 'People_Id' = '$id'");

对表名使用了错误的引号(必须是反引号而不是单引号(参见tylda ~ key)。参见文档:http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

这也是错误的

header("content-type: image/jpeg");
echo $imageData;
echo $id;

去掉最后一个echo $i;,用exit();代替它,否则你会破坏你刚刚发送的图像数据流

很多都是错的。

    你的SQL是错误的。从表和列中删除单引号,并用反勾替换。
  1. 虽然它可能仍然工作,你应该在你的标题
  2. 之后有几行新行
  3. 你不应该在回显你的图像数据后回显你的$id。
  4. 当你检查isset
  5. 时,你正在检查错误的值
  6. 同时,你应该为mysqli
  7. 使用OOP
  8. 由于您的图像数据只有一行,您不需要在while循环中包装它

下面是一个更新后的代码示例

<?php
$db = new MySQLi('localhost', 'user', 'password', 'myDatabase');
if ($db->connect_errno) {
    echo 'Connection to database failed: '. $db->connect_error;
    exit();
}
if (isset($_GET['id'])) {
    $id = $db->real_escape_string($_GET['id']);
    $result = $db->query("SELECT * FROM `people` WHERE `People_Id` = '$id'");
    $row = $result->fetch_assoc();
    $imageData = $row['image'];
    header("Content-type: image/jpeg'n'n");
    echo $imageData;
}
else {
    echo "Error!";
}