PHP显示图像BLOB从MySQL内部echo <_END


PHP display image BLOB from MySQL inside echo <_END

我试图从MySQL显示图像,它的工作原理是这样的:

echo "<tbody>";
    echo "<tr>";
        echo "<td>$linha[receita_id]";
        echo '<td><img src="data:image/jpeg;base64,'.base64_encode( $linha['image'] ).'"/>';
    echo "</tr>";
echo "</tbody>";

我想用php echo <<<_END,因为我有很多行代码,我不想为每行输入很多"echo"。所以我有这个在下面,但它不工作!我尝试了所有类型的转义字符,但仍然没有。

echo <<<_END
    <tbody>
        <tr>
            <td>$linha[receita_id]
            <td><img src="data:image/jpeg;base64,'.base64_encode( $linha[image] ).'"/>
        </tr>
    </tbody>                
_END;

$linha[receita_id]的行工作完美!但另一个没有。

任何想法?

您可以切换回HTML模式,然后在其中使用<?php echo ... ?>插入PHP值。

?>
<tbody>
    <tr>
        <td><?php echo $linha['receita_id']; ?>
        <td><img src="data:image/jpeg;base64,'<?php echo base64_encode( $linha['image'] );?>'"/>
    </tr>
</tbody>
<?php

不幸的是,您不能从这里调用函数。你能做的最好的事情是用你想要输出的值赋值一个变量,例如

$base64_encoded_image = base64_encode( $linha["image"] );
echo <<<_END
    <tbody>
        <tr>
            <td>$linha[receita_id]
            <td><img src="data:image/jpeg;base64,{$base64_encoded_image}"/>
        </tr>
    </tbody>                
_END;

首先,我认为这不是一个用PHP显示内容的好主意,但如果你想保存你最初的想法,你可以组成一个变量并使用连接,例如:

$content = "<tbody><tr>";
$content .= "<td>$linha[receita_id]</td>";
$content .= "<td><img src='"data:image/jpeg;base64," . base64_encode( $linha['image'] ) . "'"/>";
$content .= "</tr></tbody>";
echo $content;

用"代替",双引号比单引号效果更好。

另一种显示方式(如果您将在浏览器中显示),在生成的内容中只使用PHP标记:
<tbody>
   <tr>
       <td><?php echo $linha['receita_id']; ?></td>
       <td><img src="data:image/jpeg;base64,<?php echo base64_encode( $linha['image'] ) ?>" /></td>
   </tr>
</tbody>