这就是我的数据库中的表格。我试图显示我存储的图像是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;
?>
答案 0 :(得分:1)
此:
$stmt = $mysqli->prepare("SELECT PICTURE FROM display WHERE DISPLAY_ID=$imageid");
应该是:
$stmt = $mysqli->prepare('SELECT PICTURE FROM display WHERE DISPLAY_ID=?');
您直接在查询中嵌入变量,而不是实际使用您想要的绑定变量。
答案 1 :(得分:0)
它没有直接回答这个问题,但通常情况并非如此。
通常您会将图像的路径存储在数据库中(可能是varchar
字段),然后按照惯例加载图像。这样做的好处是简单,保持数据库小而且更容易版本化,正常的缓存规则适用于图像等。
缺点是任何人都可以查看图像,这可能会也可能不会引起问题。
如果您需要沿着您已经开始的路线前进,请先注释掉header("Content-Type: image/jpeg");
并查看PHP错误。这可能会有所帮助。
答案 2 :(得分:0)
还需要指定内容长度标题:
header("Content-Length: ".strlen($image));
header("Content-Type: image/jpeg");