php - 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 插入新行,图像将正确显示
解决方案
推荐阅读
- allure - 如何使用 jbhave 添加自定义魅力报告
- mysql - 查询返回重复值
- flutter - 如果布尔列表中的所有值都为真,则将变量设置为真的最佳方法
- c - 字符串操作是否因为一次访问一个字符而效率低下?
- javascript - 调用自身的函数的NodeJS计时器
- java - Spring 数据 JPA - 规范
- typescript - 调用表达式时无法解析类装饰器的签名。此表达式不可调用。打字稿 - Vue.js
- swift - iOS 14 上的 UDP 侦听器
- python - 使用报纸3k 从新闻来源获取更多文章 URL?
- uml - 您如何在序列图中表示 do while 控制结构?