简体   繁体   English

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

[英]database php mysql - how to display an image from the database

I wrote this code to display an image: 我编写了以下代码以显示图像:

<?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;                 
    }
?>

But the result is this: 但是结果是这样的:

Dettagli dello studente: ID = 2 Nome = julia Descrizione = Questo frattale ha delle caratteristiche particolari, in quanto..... ?JFIF,, C ??? Dettagli dello studente:ID = 2 Nome = julia Descrizione = Questo frattale ha delle caratteristiche particolari,以量子..... ?JFIF ,, C??? ????!?"$"$ C?? ? ?}!1A?Qa"q2 #B R $3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? w!1AQaq?"2 B #3R br $4 % &'() 56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? ĺޙ }cW 6 Pm $ύ p 7 bj T 8 ? ? A . W > E W3/ - K XI~ } %? 6 A\\ ; 8$ ^I U} k ]޺ L < ?Q l 4 ܗ ????!?“ $$$ C ?? ? ?}!1A?Qa”q2 #B R $3br %&'() * 456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz 1AQaq?“2 B #3R br。 $4 % &'() 56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz }cW 6 Pm $ύ p 7 bjT 8 EW3 / - K XI〜 } %? 6 A\\ ; 8$ ^I U} k ]޺ L。 < ?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? + u6c? w ?m 5H o ?m 5@ 5/ w j ? j_ :7 Կ to ? ~ + T R ѿ Ww ƨ C P I ; 9 ; P ? _ ?3 q ˯ 7T . + h >? 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 gK f g y4 F@ gC+ -+7 ( } fhA o * u b m t # : u ]# Ȯ TSS. { ? ˯。 7Ijj _R3P?|d + uu%%±1? + u6c?w ?m 5H o m 5@ 5\\ 5 / w j ?j_ :7.to. ? + T R Ww ƨ C P I ; 9 ;P ?___ 3?q 7 7T . + h >? 7' w j r ڋ 1W w.w ... 4B.R ... Ww.Ʃ? 〜 + .T.R ... Ww.w。 C K 7 F ] o?? 5@ 5/ wwj.?jO。 9 ԟ so j- ? m 7U(J; ; 3o J 1 " q { L| ? u r L Qob ? ^)f ? ? N Y^ ; mK R 8 3 X Z; ) X ? e 7|3 # sg8 *> S Ͽ e~/ =9 > } V / $O >w I N A> R ,? ?/ ] z} & ac ~O 4_? #(5Sϭ j |dw ̵? 97 틏 K / Gx ( y? f K =H F ? .x rB mi 7 Q ".F/ Ɲ ? ! 8x O ; { i ? x ( ?F' ޛ ? # r i ^? G {9 8 j- ? m 7U(J; ; 3o J 1 ''qq { L| ?? u r L Qob ? ^)f。 ? N Y^ ; mKR 8 3 X Z ; ) X ? e 7|3 #SG8 *>SϿe〜/ = 9>} V / $ø > w I N A> R ,? ?/ ] z} & ac 〜O 4_? #(5Sϭj|?DW 97틏K /的Gx(Y FK = HF?.xrBmi7Q” .F /Ɲ?!8X O;???{我X(F'ޛ#^里? G {9 8 G u (u m G g Q g ^ ~ = Q i .y q i t u 4u ? ! ! iK {H ? (#; yj i : GOz= E {$r?>[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+ F?r 鶝| ' , ? @ ;E ? t CR% ! x F ]n G ) d Q H G u (u m GQgg ^ 〜 = Q i .y q t u 4u ? !!!iK {H ? (#; yj i : GOz= E { $ r?> [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+ F?r 鶝| , @ ;E ? t CR%!xF的] NG)DQH

How can i solve this problem????? 我怎么解决这个问题????? I think there is a problem with the conversion of the image. 我认为图像转换存在问题。 Thanksss. Thanksss。

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

After so many echoes you are sending 在发送了如此多的回声之后

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

Which is meaningless there, hence the messed up output. 在那里没有意义,因此输出混乱。 If you want to send image content then you can only send that in response with proper headers. 如果要发送图像内容,则只能以适当的标题作为响应发送。 You cannot mix image and text both in one response. 您不能在一个响应中同时混合图像和文本。

TLDR; TLDR; Remove every other echo than the image content with its header. 除带有标题的图像内容外,消除其他所有回声。

When you have to Output an Image out of a DB ( which is basically a bad idea though ) make sure that you do NOT echo anything, just send the Header like this: 当您必须将图像输出到数据库之外时(虽然这基本上是一个坏主意),请确保您不回显任何内容,只需发送Header,如下所示:

    <?php

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

?>

but you should re-write your code a bit to make it even more usable. 但是您应该重新编写代码以使其更加有用。

I agree w/ Hanky Panky, you cannot mix image and text which need different output methods. 我同意Hanky Panky,您不能将需要不同输出方法的图像和文本混合在一起。

assuming base64 is used, instead of 假设使用base64,而不是

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

can you try 你能试一下吗

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

Also, How to display Base64 images in HTML? 另外, 如何以HTML显示Base64图像? provides more info which could help you 提供更多可以帮助您的信息

In addition to the point made by Hanky Panky and WongFailHung, you can't output more than in image in response to the same request. 除了Hanky Panky和WongFailHung提出的要点外,对于相同的请求,您不能输出比图像更多的图像。 Actually, you can send the data but you'll only see the first image. 实际上,您可以发送数据,但只会看到第一张图像。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM