0

我有这个 php 代码,它从数据库中获取二进制( blob )数据并在浏览器中显示为图像。但是,此后的所有内容都将被忽略。有没有办法我也可以使用 text queries/forms/tables?同一页面上的基本 HTML 元素?

拥有一个只能显示来自数据库的图片而没有其他任何东西的页面对我来说毫无用处。

<?php
    $mysqli=mysqli_connect('localhost','root','','draftdb');
    if (!$mysqli)
    die("Can't connect to MySQL: ".mysqli_connect_error());
    $imageid= 1;
    $stmt = $mysqli->prepare("SELECT PICTURE_ID FROM display WHERE INDEX_ID =?"); 
    $stmt->bind_param("i", $imageid);
    $stmt->execute();
    $stmt->bind_result($image);
    $stmt->fetch();
    header("Content-Type: image/jpeg");
    echo $image; 
?>
4

4 回答 4

4

Content-Type不可以,每页只能有一个。

您应该做的是简单地创建另一个页面,其中包含图像(src 指向您显示的代码)和您要显示的表单,如下所示:

<html>
    <body>
        <div>
            <img src="image.php" alt="image retreived from DB" />
        </div>
        <form>
            <input type="text" name="foo" />
            ...
        </form>
    </body>
</html>
于 2012-07-27T18:03:38.430 回答
2

一个 http 响应中不能有多种内容类型。

要使用数据库中的图片制作页面,您可以制作常规页面并为您的img标签使用以下选项之一:

  1. src="your_picture_script.php?pic_id=xxxx"- 'your_picture_script.php' 几乎就是您问题中的示例。

  2. src="data:image/jpeg;base64,<?php echo base64encode($image);?>"- $image 是实际的 jpeg 文件。

于 2012-07-27T18:11:01.267 回答
2

当使用图像类型的标题内容时,该页面上唯一可以显示的信息是图像本身。虽然可以在大脚本中使用子 php 脚本,并让子脚本返回图像标题,然后让常规脚本对此进行其他操作。

所以你可以这样做:<img src="\path\to\php\script" />在你的其他脚本中,它会按照你的意愿工作。

于 2012-07-27T18:03:49.143 回答
0

为什么不在<img>标签中显示图像?然后在它下面写其他 HTML 元素?

Content-Type头告诉浏览器它将显示哪种类型的数据。您可以在 HTML 中显示图像,而不是在图像中显示 HTML(除非它是 HTML 代码的图像)。

于 2012-07-27T18:05:02.023 回答