Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用mysql在php中显示图像_Php_Mysql - Fatal编程技术网

使用mysql在php中显示图像

使用mysql在php中显示图像,php,mysql,Php,Mysql,我试图显示一个图像以及数据库中的其他信息 PHP <?php mysql_connect("localhost","111","222") or die("Could not connect to localhost"); mysql_select_db("movies") or die( "Could not connect to database"); $result = mysql_que

我试图显示一个图像以及数据库中的其他信息

PHP

  <?php
               mysql_connect("localhost","111","222") or die("Could not connect to localhost");
               mysql_select_db("movies") or die( "Could not connect to database");

               $result = mysql_query("SELECT * FROM allmovies");
               if ($result == false )  die(mysql_error()); 
               while($row = mysql_fetch_array($result))
               {
                    echo "<img src=' . $row['image'] . '>";
               ?>

比如:

标题:废话
价格:废话
图像:

在一个页面中全部来自MySQL

  • 不要将图像数据存储在数据库中,它们通常不适合这种情况,并且会给返回数据的MySQL连接带来额外的开销。您应该存储图像文件的路径,并为其提供服务
  • 如果您坚持这样做,您应该一次只返回一个图像,并根据图像类型使用以下方法返回适当的标题:

    $imagedata = data_from_mysql();
    header('Content-Length: ' . sizeof($imagedata) );
    header('Content-Type: image/png');
    echo $imagedata;
    exit;
    
  • 如果您确实想使页面源代码臃肿、缓慢、不可管理且几乎不可缓存,请执行以下操作:

    while( $imagedata = data_from_mysql() ) {
      echo "<img src='data:image/png;base64," . base64_encode($imagedata) . "'>";
    }
    
    while($imagedata=data\u from\u mysql()){
    回声“;
    }
    
  • 我怎么强调都不过分,这些想法多么可怕,你不应该使用,但是如果你听不到理性,你至少可以用正确的方式做坏事

  • 不要将图像数据存储在数据库中,它们通常不适合这种情况,并且会给返回数据的MySQL连接带来额外的开销。您应该存储图像文件的路径,并为其提供服务
  • 如果您坚持这样做,您应该一次只返回一个图像,并根据图像类型使用以下方法返回适当的标题:

    $imagedata = data_from_mysql();
    header('Content-Length: ' . sizeof($imagedata) );
    header('Content-Type: image/png');
    echo $imagedata;
    exit;
    
  • 如果您确实想使页面源代码臃肿、缓慢、不可管理且几乎不可缓存,请执行以下操作:

    while( $imagedata = data_from_mysql() ) {
      echo "<img src='data:image/png;base64," . base64_encode($imagedata) . "'>";
    }
    
    while($imagedata=data\u from\u mysql()){
    回声“;
    }
    
  • 我怎么强调都不过分,这些想法多么可怕,你不应该使用,但是如果你听不到理性,你至少可以用正确的方式做坏事。

    你可以使用

    $im=imagecreatefromstring($row['image']);
    如果($im!==false){
    ob_start();
    图像JPEG($im);
    $data=ob_get_contents();
    ob_end_clean();
    回声';
    }
    
    这只是我的看法,但将图像保存到文件服务器,然后将对路径的引用而不是整个图像存储为blob可能会稍微明智一些

    $im=imagecreatefromstring($row['image']);
    如果($im!==false){
    ob_start();
    图像JPEG($im);
    $data=ob_get_contents();
    ob_end_clean();
    回声';
    }
    


    这只是我的观点,但将图像保存到文件服务器,然后将路径引用而不是整个图像作为一个blob存储可能更明智一些?

    我希望您有充分的理由使用古老的
    mysql\u query
    接口。您在db中存储了什么?它的路径还是什么?我正在将.png文件存储为一个blobHow,您是如何存储字节字符串的?base64编码?如果它是png,那么你不应该发送jpeg头。我希望你有充分的理由使用古老的
    mysql\u查询接口。你在db中存储什么?它的路径还是什么?我正在将.png文件存储为一个blobHow,您是如何存储字节字符串的?base64编码?如果它是png,那么你不应该发送jpeg标题。@Sammitch好的,谢谢。我现在把它改成了小路。我尝试使用echo“”;你在那里混合了单引号和双引号,
    echo'或更好的
    printf(''.$row['image'])其中$row['image']=类似于“entry-1.jpg”的内容,而不是在数据库中存储完整路径。更合理的做法是存储文件名,然后将路径作为系统变量,以防移动对象around@KaiQing我建议不要使用绝对路径,因为这会将您的代码绑定到它当时所在的特定计算机上,并使更改的主机/计算机/提供rs/OSes/etc是个大麻烦。@Sammitch-我的意思是在标记的src attr中写入绝对值,而不是像现在一样回显$row['image']。假设db结果只是一个文件名或其他东西@Sammitch好的,谢谢。我现在将它改为路径。我正在尝试使用echo“";你在那里混合了单引号和双引号,
    echo'或更好的
    printf(''.$row['image'])其中$row['image']=类似于“entry-1.jpg”的内容,而不是在数据库中存储完整路径。更合理的做法是存储文件名,然后将路径作为系统变量,以防移动对象around@KaiQing我建议不要使用绝对路径,因为这会将您的代码绑定到它当时所在的特定计算机上,并使更改的主机/计算机/提供rs/OSes/etc是个大麻烦。@Sammitch-我的意思是在标记的src attr中写入绝对值,而不是像原样回显$row['image']。假设db结果只是一个文件名或其他什么