PHP 在 echo <_END 中显示来自 MySQL 的图像 BLOB

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]的那一行完美无缺!但是另一个没有。

有什么想法吗?

嗯,首先我认为以这种方式使用 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>

遗憾的是,您不能从 heredoc 中调用函数。你能做的最好的事情就是为一个变量分配你想要输出的值,例如

$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;

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

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