database php mysql - 如何从数据库中显示图像

时间:2015-03-17 16:52:56

标签: php mysql

我写了这段代码来显示图片:

<?php
$sel = " SELECT *
         FROM immagini
         WHERE id= ".$_GET['idx'];

$ris = mysqli_query($con,$sel);      
$count = mysqli_num_rows($ris);     

if($count >= 1)  echo "<h1>Dettagli dello studente: </h1>";

while ( $riga = mysqli_fetch_array($ris)) {         

    echo "ID  = ".$riga['id']; ?> <br > <?php
    echo "Nome = ".$riga['name']; ?> <br > <?php
    echo "Descrizione = ".$riga['descrizione']; ?> <br > <?php     

    $imageData= $riga["image"];
    header("content-type :image/jpeg");
    echo $imageData;                 
    }
?>

但结果如下:

Dettagli dello studente: ID = 2 Nome =朱莉娅 Descrizione = Questo frattale ha delle caratteristiche particolari,in quanto ..... JFIF,, C!“$”$ C }!1AQa“q2 #B R $3br %&amp;'() * 456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq“2 B #3R br $4 %安培;'() 56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ·Lޙ} cW6Pm $ύp7bj T8 ?? A W&GT。 EW3 / -KXI〜}%6A \;8$ ^ IU} K和]޺ L&LT ; Q l 4 ܗ ӳ gK f g y4 F@ gC+ -+ 7 ( } fhA o * u b ?m t# :u ]#Ȯ Ȯ Tѕ { ˯ 7I j _R3 P |d + u % + 1?+ u6cwm5Hom5 @ 5 / w的j j_ :7 to ? 〜 + T R Ww ƨ C P I ; 9 ; P _ 3 q 7T . + h &gt; 7' w j r 1W w Σ .. 4 B R Ww Σ? 〜 + T R Ww ƨ C P K 7 F ] o 5 @ 5/ w j jO 9 so j- ? m 7U(J; ; 3o J 1 “ q { L| ? u r L Qob ^)f ? N Y^ ; mKR 8 3XZ;)X E7 | 3#SG8 * GT;SϿe〜/ =9 &gt; } V / $O &gt;w I N A&gt; R ,/] Z} &安培; AC〜O4 _#(5Sϭj| DW 97틏K /的Gx(YFK = HF?.xrBmi 7Q” .F /Ɲ8xO;?!{IX (F'ޛ?# r i ^ G {9 8 G u (u m G g Q g ^ 〜 = Q i .y q i t u 4u ? ! ! iK { δH(#; yji:GOZ = E {$ R&GT; [9I | F2的i3%ZՌ&N_ 8 pO x t?ܭcFr n#_ UY t / (S e wF ; y _N: t' 8Ez 7) d ; 3'T N ' , wBx 3ұ K+ Fr | ”,@; E! TCR%xF的] NG)d QH

我怎样才能解决这个问题?????我认为图像转换存在问题。 Thanksss。

4 个答案:

答案 0 :(得分:1)

echo "ID  = ".$riga['id']; ?> <br > <?php
echo "Nome = ".$riga['name']; ?> <br > <?php
echo "Descrizione = ".$riga['descrizione']; ?> <br > <?php   

在您发送了如此多的回声之后

 header("content-type :image/jpeg");

那里没有意义,因此搞砸了输出。如果要发送图像内容,则只能使用正确的标头发送该图像内容。您不能在一个响应中混合图像和文本。

TLDR; 使用标题删除除图像内容之外的所有其他回音。

答案 1 :(得分:1)

当你必须从数据库输出图像时(虽然这基本上是一个坏主意)确保你不回应任何东西,只需像这样发送标题:

    <?php

    $imageData= $riga["image"];
    header("content-type :image/jpeg");
    echo $imageData;                 

?>

但是你应该重新编写一些代码以使其更加可用。

答案 2 :(得分:0)

我同意Hanky Panky,你不能混合需要不同输出方法的图像和文字。

假设使用了base64,而不是

$imageData= $riga["image"];
header("content-type :image/jpeg");
echo $imageData;     
你可以尝试

吗?
$imageData= "<img src='data:image/jpeg;base64,".$riga["image"]."' />";
echo $imageData;

此外,How to display Base64 images in HTML?提供了更多可以帮助您的信息

答案 3 :(得分:0)

除了Hanky Panky和WongFailHung提出的观点之外,为了响应相同的请求,您不能输出超过图像的内容。实际上,您可以发送数据,但您只能看到第一张图片。