2016-05-19 4 views
0

Это мой .php файлНевозможно отобразить изображение PHP

<?php 
     ini_set('mysql.connect_timeout',300); 
     ini_set('default_socket_timeout',300); 
    ?> 
    <html> 
     <body> 
      <form method="post" enctype="multipart/form-data"> 
      <br/> 
       <input type="file" name="image" /> 
       <br/><br/> 
       <input type="submit" name="sumit" value="Upload" /> 
      </form> 
      <?php 
       if(isset($_POST['sumit'])) 
       { 
        if(getimagesize($_FILES['image']['tmp_name']) == FALSE) 
        { 
         echo "Please select an image."; 
        } 
        else 
        { 
         $image= addslashes($_FILES['image']['tmp_name']); 

         $image= file_get_contents($image); 
         $image= base64_encode($image); 
         saveimage($image); 
        } 
       } 
       displayimage(); 
       function saveimage($image) 
       { 
        $con=mysql_connect("localhost","root",""); 
        mysql_select_db("food",$con); 
        $qry="insert into info (image) values ('$image')"; 
        $result=mysql_query($qry,$con); 
        if($result) 
        { 
         echo "<br/>Image uploaded."; 
        } 
        else 
        { 
         echo "<br/>Image not uploaded."; 
        } 
       } 

       function displayimage() 
       { 
        $con=mysql_connect("localhost","root",""); 
        mysql_select_db("food",$con); 
        $qry="select image from info"; 
        $result=mysql_query($qry,$con); 
        while($row = mysql_fetch_assoc($result)) 
        { 
         echo '<img height="300" width="300" src="data:image;base64,'.$row[2].' "> '; 
        } 
        mysql_close($con); 
       } 
      ?> 
     </body> 
    </html> 

Почему я не могу показать мою картину, когда я добавить его. Картинка хранится в базе данных уже при загрузке, но я не могу ее отобразить. Есть что-то не так с кодом дисплея там? Спасибо

+2

** Остановить **, используя устаревший API 'mysql_ *'. Вместо этого используйте 'mysqli_ *' или 'PDO'. Также проверьте наличие ошибок после выполнения SQL-запроса. – Jens

+1

Прежде всего. перестаньте использовать 'mysql_ *', эти функции решены и действительно небезопасны. 2nd: что происходит, когда вы сбрасываете '$ row'? – Peon

ответ

0

Смотрите эту линию,

while($row = mysql_fetch_assoc($result)){ ... 

Вы выборку строки в качестве ассоциативного массива, а не в виде числового массива, так $row[2] не будет работать. Используйте $row['image'] в вашем элементе <img>, чтобы отобразить изображение.

Так что ваш код должен быть таким:

while($row = mysql_fetch_assoc($result)){ 
    echo '<img height="300" width="300" src="data:image;base64,'. $row['image'] . '">'; 
} 

Sidenotes:

  1. Не используйте mysql_* функции, они являются устаревшими в РНР 5.5 и удаляются полностью в PHP 7.0. Вместо этого используйте mysqli или pdo. And this is why you shouldn't use mysql_* functions.
  2. Узнайте о prepared statements, так как прямо сейчас ваши запросы подвержены SQL-инъекции. Также см. how you can prevent SQL injection in PHP.
1

В текущем изменении кода здесь

Replace $row[2] в $row['image']

и попытаться преобразовать код, как комментировал предложение.

+0

это stil не может работать .. отображать суммировать как целую страницу чужие слова – ron

+0

показать, какую ошибку вы получаете? – C2486

+0

все в порядке. Я исправляю это уже, забыл поставить одиночные цитаты – ron

Смежные вопросы