首页 > 解决方案 > BLOB 正确插入 DB,但未在 HTML 中显示

问题描述

我有一个下拉列表,我在其中显示来自 DB 的图像和名称,现在我将此图像和名称保存回数据库 (phpmyadmin) 到另一个表中。我的问题是图像已正确保存到数据库中,因为我下载了图像并对其进行了转换以确保其正常工作。问题是在PHP页面上对图像进行base64_encode时的值与数据库的值不同。有人可以帮我指出问题所在。谢谢

显示图像的表格

<tbody>
<?php
   while ($row = $sth->fetch(PDO::FETCH_ASSOC))
   {
       $matchday = $row['matchday'];
       $competition = $row['competition'];
       $home_logo = $row['home_logo'];
       $home_team = $row['home_team'];
       $away_logo = $row['away_logo'];
       $away_team = $row['away_team'];
       $date = $row['date'];
       $time = $row['time'];
       $stadium = $row['stadium'];
       $date_time = $row['date_time'];
                                        
       echo '<tr>';
       echo '<td>'.$date_time.'</td>'; 
       echo '<td>'.$matchday.'</td>';
       echo '<td>'.$competition.'</td>';
       echo '<td class="imagesize">'."<img src='data:image/png;base64,".base64_encode($home_logo)."'/>".'</td>'; 
       echo '<td>'.$home_team.'</td>'; 
       echo '<td class="imagesize">'."<img src='data:image/png;base64,".base64_encode($away_logo)."'/>".'</td>';
       echo '<td>'.$away_team.'</td>'; 
       echo '<td>'.$date.'</td>'; 
       echo '<td>'.$time.'</td>'; 
       echo '<td>'.$stadium.'</td>'; 
       echo '</tr>';
    }
 ?>

我有下拉菜单的表格

<div class="form-group p-3">
    <label for="input_hometeam">Home Team</label>
       <select class="form-control" id="input_hometeam" name="input_hometeam" onchange="document.getElementById('output_home').src = this.value; document.getElementById('input_stadium').value = $(this).find(':selected').data('stadium')">
       <?php
          while ($row = $home_team->fetch(PDO::FETCH_ASSOC)) 
          {
               $hometeamlogo = $row['logo'];
               $hometeamstadium = $row['stadium'];
               $hometeamname = $row['team_name'];
               echo "<option te_name='$hometeamname' value='data:image/png;base64,".base64_encode($hometeamlogo)."' data-stadium='$hometeamstadium'>" . $row['team_name'] . "</option>";
               }
       ?>
     </select>
     <input type='hidden' id="home_name" name="home_name" value=""/>
  </div>
  <img id="output_home" name="output_home" src="#" width="250" height="250" style="padding:25px; margin:0 auto;" alt="Team Logo"> 

选项值是发送到数据库的值

INSERT 语句到数据库

if(isset($_POST['submit'])){
    try
    {
        $matchday = $_POST['input_matchday'];
        $date = $_POST['input_date'];
        $leg = $_POST['input_leg'];
        $competition = $_POST['input_competition'];
        $stadium = $_POST['input_stadium'];
        $hometeam = $_POST['input_hometeam'];
        $awayteam = $_POST['input_awayteam'];
        
        $hometeamname = $_POST['home_name'];
        $awayteamname = $_POST['away_name'];
        
        $hometeamlogo = $_POST['input_hometeam'];
        $awayteamlogo = $_POST['input_awayteam'];
                        
        $updateFixtures = $dbh->prepare("INSERT INTO fixtures (matchday, home_logo, home_team, away_logo, away_team, stadium, leg, competition, date_time) VALUES ('$matchday', '$hometeamlogo', '$hometeamname', '$awayteamlogo', '$awayteamname', '$stadium', '$leg', '$competition', '$date')");
        
        $dbh->errorInfo();          
        $updateFixtures->execute();
        
        header('Location: view_fixtures.php');
    }
    catch(PDOException $e)
    {
       'Error : ' .$e->getMessage();
    }
}    

更新:如果我直接从 phpmyadmin 插入新行,图像将正确显示

标签: phphtmldatabaseimageblob

解决方案


推荐阅读