[英]Displaying Image from Mysql with PHP
这就是我的表在数据库中的样子。 我正在尝试显示存储的图像是mimetype(longblob)。 当我运行代码时,它给了我一个带有?的小盒子。 ,仅此框没有错误。 有谁知道错误是什么以及我该如何解决?
Display
+-------+------------+----------+
| Index | Display_ID | Picture |
+-------+------------+----------+
| 1 | 12 | longblob |
+-------+------------+----------+
<?php
$mysqli=mysqli_connect('localhost','root','','draftdb');
if (!$mysqli)
die("Can't connect to MySQL: ".mysqli_connect_error());
$imageid= 12;
$stmt = $mysqli->prepare("SELECT PICTURE FROM display WHERE DISPLAY_ID=$imageid");
$stmt->bind_param("i", $imageid);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($image);
$stmt->fetch();
header("Content-Type: image/jpeg");
echo $image;
?>
这个:
$stmt = $mysqli->prepare("SELECT PICTURE FROM display WHERE DISPLAY_ID=$imageid");
应该:
$stmt = $mysqli->prepare('SELECT PICTURE FROM display WHERE DISPLAY_ID=?');
您是直接在查询中嵌入变量,而不是像预期的那样实际使用绑定变量。
它不是直接回答这个问题,但是通常这不是您的操作方式。
通常,您会将图像的路径存储在数据库中(也许作为varchar
字段),然后照常加载图像。 这具有以下优点:简单,使数据库保持较小且更易于版本控制,将常规缓存规则应用于映像等。
缺点是任何人都可以查看图像,这可能会或可能不会引起问题。
如果您需要沿着开始的路线走,请首先注释掉header("Content-Type: image/jpeg");
并查看什么是PHP错误。 这可能会有所帮助。
也必须指定一个内容长度标头:
header("Content-Length: ".strlen($image));
header("Content-Type: image/jpeg");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.