我有一个查询来获取信息图像:
$q4 = "SELECT TOP 3 b.BadgeName, b.BadgeImage FROM BadgeImageTable AS b
INNER JOIN employee_badge AS e
ON e.badge_id = b.BadgeID
WHERE e.employee_id = 2164
ORDER BY e.earned_on DESC ";
$stmt3=sqlsrv_query($conn,$q4);
if($stmt3==false){
echo 'error to retrieve info !! <br/>';
die(print_r(sqlsrv_errors(),TRUE));
}
HTML 上一个:
<!--
<span class="fa-stack fa-5x has-badge" >
<div class="badgesize">
<img src="images/1.png" alt="" >
</div>
</span>
-->
现在在上面的 HTML 中,我试图回显图像:
<span class="fa-stack fa-5x has-badge" >
<div class="badgesize">
<img src="
<?php
if($count = sqlsrv_num_rows($stmt3) > 0){
while($recentBadge = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC)){
$result[] = $recentBadge;
}
if($count > 3){
$result = array_rand($result, 3);
}
foreach($result as $recentBadge){
echo
$recentBadge['BadgeName'],
'<img src="data:image/png;base64,'.base64_encode($recentBadge['BadgeImage']).'"/>',
'<br>'
;
}
} else {
echo 'no results';
}
?>
" alt="" >
</div>
</span>
</div>
</span>
BadgeImage、BadgeID 和 BadgeName 是“BadgeImageTable”中的列名,我试图从这里回显。
当我在我的数据库中使用查询时,它会根据需要获取数据。PLZ,见下文。
问题:我无法在 html 中回显上述 BadgeImage。
我使用以下查询存储了图像:
Insert Into BadgeImageTable(BadgeID, BadgeImage)
Select '77', BulkColumn
from Openrowset (Bulk 'C:\Users\mrashidjne\Desktop\diligent.png', Single_Blob) as Image
关于这个问题,我唯一能找到的是你应该以二进制形式获取图像:
while(sqlsrv_fetch($stmt3)){
$result[] = [
'name' => sqlsrv_get_field($stmt3, 0),
'img' => sqlsrv_get_field($stmt3, 1, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY))
];
}
有了这个,您应该能够显示图像:
function blob2image($mime, $blob){
ob_start();
header("Content-type:$mime");
echo $blob;
return ob_get_contents();
}
$mime = 'image/png';
foreach($result as $row){
echo $row['name'];
echo '<img src="data:'.$mime.';base64,'.base64_encode(blob2image($mime, $row['img'])).'"/>';
}
我不能肯定地说这行得通,因为我没有能力进行测试,而且我也找不到关于这个主题的很多信息。
另一种方法是将图像存储为:
无论BadgeImage
是text
编码图像还是varchar
要存储路径,这两种方法都需要将列数据类型更改为。
$file = 'C:\Users\mrashidjne\Desktop\diligent.png';
#$file = 'images/1.png'; // or store path relative to webroot and echo image as normally.
$mime = mime_content_type($fn);
$img = base64_encode(file_get_contents($fn));
$src = "$data:$mime;base64,$img"
$sql = "INSERT INTO BadgeImageTable (BadgeName, BadgeImage) VALUES ('diligent', '$src')";
现在在打印时,它应该像以下一样简单:
echo '<img src="'.$row['BadgeImage'].'"/>';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句