如何处理mySQL PHP中的图像blob列

如何处理mySQL PHP中的图像blob列,php,mysql,blob,Php,Mysql,Blob,我有一个SQL表imgTbl,其中一列的类型为MEDIUMBLOB。我在列中填充了以下内容: LOAD_FILE(“E:/wamp64/tmp/test.jpg”)); 问题:我想在PHP中使用此图像。我读到我必须图像数据,但是当我还有其他列时,我该如何挑选出该列进行编码呢?我的php查询如下所示: $query = "SELECT * FROM imgTbl"; $result = mysqli_query($conn, $query); if (!$result) {

我有一个SQL表
imgTbl
,其中一列的类型为
MEDIUMBLOB
。我在列中填充了以下内容:

LOAD_FILE(“E:/wamp64/tmp/test.jpg”));
问题:我想在PHP中使用此图像。我读到我必须
图像数据,但是当我还有其他列时,我该如何挑选出该列进行编码呢?我的php查询如下所示:

  $query = "SELECT * FROM imgTbl";
    $result = mysqli_query($conn, $query);
    if (!$result) {
      die("Database query failed.");
    }
  $rows = array();
   while($subject = mysqli_fetch_assoc($result)) {
      // If $rows["image"] then encode??
      $rows[] = $subject;
   }
   echo $json_response = json_encode($rows);

然后将回音传递给javascript,从而得到最终的JSON格式。

回答您的问题:

在MYSQL数据库中存储图像与存储任何其他类型的文件没有什么不同。存储图像时,还需要使用存储内容类型。这将允许您在从数据库检索图像时正确地重建图像

您不能简单地将图像的二进制数据回显到页面,因为在这种形式下,它没有任何意义

当网页显示图像时,这是因为浏览器向服务器发送了GET请求,而服务器返回了图像mime类型的内容

您可以很容易地在
标记中使用URI来指向原始二进制数据,如下所示:

<img src="data:<?php echo $imageMimeType; ?> ; base64, <?php echo $binaryImage; ?>">
;base64,“>
请注意,在上面的标记中,指定了mime类型

一些建议:

  • 开始使用PDO
  • 您当前的mysqli查询将返回整个表中的所有图像和所有其他关联字段。我认为您可能打算使用
    where
    子句
  • 在数据库中存储图像很麻烦,通常文件不是数据库的理想候选对象。虽然图像可能很小,但文件系统通常是存储图像的最佳候选对象。您可以轻松设置文件夹结构来存储图像,并使用数据库来存储其路径

我需要知道,这真的是你的代码吗?
加载文件(“E:/wamp64/tmp/test.jpg”);
-如果是这样,那些卷曲的引号会阻塞你的代码,错误报告会告诉你的。使用常规引号
。是的,我不知道在这里复制它们时为什么会出现卷曲。但它们实际上是正常的引用。插入文件时没有显示错误。使用php的错误报告并将
mysqli_error($conn)
添加到查询中,查看是否有任何结果。
$subject
是while循环中的关联数组,所以只需执行以下操作:
$subject['image']
即可获得该列。如果image列被称为
image
,也就是说,blob包含二进制数据,因此如果在执行
json\u encode()
时数组中有这些数据,那么它就不好看了。在您的循环中,在将其添加到
$rows
-array之前,先执行:
$subject['image']=base64_encode($subject['image'])
。这种方法的计划是将此echo分配给javascript
$http.post(“getData.php”)中的一个变量。成功(函数(数据){$scope.projects=data;控制台.log($scope.myList);})然后在有角度的重复中使用它。我的主页实际上不是php,而是html,我计划使用内联
data:image/png;base64,{{liselement.image}
将其转换回。如果没有pdo和mime,这个方法行得通吗?如果没有pdo,这个方法行得通,我建议使用它,因为它是PHP中访问数据库的最新方法,而且(我可能弄错了)MYSQLi不受欢迎。重要的是要理解,无论您提供什么方法(php、js、angular),您都必须告诉浏览器内容是什么。如果我送你一首歌,结尾没有“.mp3”,而且没有告诉你这是一首歌,你怎么能听呢?在您的示例中,
image/png
是mime类型。只要确保图像类型发生变化(即png、jpg、gif…)时它就会发生变化