显示mysql数据库中的图像

时间:2012-11-26 23:09:33

标签: php mysql image

我对php比较新。从mysql数据库中检索blob数据后,我在浏览器(谷歌浏览器)中显示图像时出现问题。

基本上,当在底部的回声前添加斜杠时,以下代码有效。然而,我已经按照其他在线教程和导师已经能够显示他们的图像,而不使用斜杠,而我无法得到图像。我只是想知道标准规则是什么?另外要添加的东西 - 当我无法在浏览器中获取图像时,我会得到一个ting缩略图。如果有人能告诉我如何可靠地显示图像,我真的很感激。我想创建的网站只是关于图像。所以它的基础。非常感谢你的时间。

<?php
$conn = mysql_connect ("localhost","root","arctic123");
$db = mysql_select_db ("user_images", $conn);

if(!$db) {
    echo mysql_error();
}

$q = "SELECT * FROM images";
$r = mysql_query ("$q",$conn);
if($r) {
    while($row = mysql_fetch_array($r)) {
        //echo $row ['username'];
        //echo "<br>";
        header ("Content-type: image/jpeg");
        echo $row ['logo'];
        //echo "<br>";
    }
}else{
    echo mysql_error();
}
?>

3 个答案:

答案 0 :(得分:2)

您的代码中的任何输出后都无法headerhttp://php.net/manual/en/function.header.php

最佳做法是将图像上传到目录,然后将图像的路径/文件名存储在数据库中。还可以更容易地操纵图像,例如使用PHP创建不同的大小和缩略图。它占用磁盘空间大约四倍......

答案 1 :(得分:0)

希望你没有将你的图像存储在MySQL上,如果你这样做,请停止这种有害行为,因为它会使你的数据库不必要地沉重......

答案 2 :(得分:0)

我建议不要将图像存储在数据库中。虽然技术上可行,但它存在严重的性能问题。最佳做法是为图像指定一个文件夹,然后直接访问它们。如果您想要MySQL的过滤和排序,请将当前存储图像数据的BLOB列替换为包含文件名的VARCHAR。

<?php
$conn = mysql_connect ("localhost","root","arctic123");
$db = mysql_select_db ("user_images", $conn);
$imgdir = "/path/to/image/directory/";

if(!$db) {
    echo mysql_error();
}

$q = "SELECT * FROM images";
$r = mysql_query ("$q",$conn);
if($r) {
    while($row = mysql_fetch_array($r)) {
        echo $row['username'];
        echo "<br>";
        echo "<img src='" . $imgdir . $row['logo'] . "' />";
        echo "<br>";
    }
}else{
    echo mysql_error();
}
?>