如何使用PHP从MYSQL插入和检索图像blob?

这是MySQL表db table containg blob image如何使用PHP从MYSQL插入和检索图像blob?

我想要做的是插入图像,并存储在“理由”作为一个blob,然后检索,并在另一页表中的显示。

这是我用来显示其代码:

<?php 

while ($row = $rep->fetch()) { //$row contains the previous table's data

$image = $row['justification']; //justification is the blob image

$encoded_image = base64_encode($image); ?>

<tr>

<td><?php echo $row['ncarte']; ?></td>

<td><?php echo $row['module']; ?></td>

<td><?php echo $row['type']; ?></td>

<td><?php echo $row['dateabs']; ?></td>

<td><?php echo "<a href='data:image/png;base64,{$encoded_image}' download> <img height='30px' src='data:image/png;base64,{$encoded_image}'> </a>";?> </td>

</tr>

<?php } ?>

此代码的工作完美,如果我从phpMyAdmin的手动插入的图像。 但是当我插入图像到数据库与PHP图像不显示。

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" > 

<label for="module" >Module :</label>

<select name="module">

<?php foreach ($module as $mod) { ?>

<option value="<?php echo $mod; ?>" > <?php echo $mod; ?> </option>

<?php } ?>

</select>

<br>

<label for="type" >type :</label>

<select name="type">

<?php foreach ($type as $ty) { ?>

<option value="<?php echo $ty; ?>" > <?php echo $ty; ?> </option>

<?php } ?>

</select>

<br>

<label for="date" >Date :</label>

<select name="date">

<?php foreach ($date as $dat) { ?>

<option value="<?php echo $dat; ?>" > <?php echo $dat; ?> </option>

<?php } ?>

</select>

<br>

<input type="file" name="image"/>

<br>

<input type="submit" name="submit"/>

</form>

<?php

if(count($_FILES) > 0) {

if(is_uploaded_file($_FILES['image']['tmp_name'])) {

$date_of_abs = $_POST['date'];

$type_of_abs = $_POST['type'];

$module_of_abs = $_POST['module'];

$imgData =addslashes(file_get_contents($_FILES['image']['tmp_name']));

$sql = $bdd->prepare("UPDATE abs SET justification=? WHERE ncarte=? and module=? and type=? and dateabs =?");

$sql->execute(array(,$imgData,$_SESSION['etudiant'],$module_of_abs,$type_of_abs,$date_of_abs));

}}

?>

这是输出: 第一行中我插入从phpMyAdmin的手动 图像的第二行中我与代码 html table displaying the 2 images

回答:

尝试删除“和addslashes”方法调用插入相同的图像,当使用DB引擎处理的准备好的语句时,您不需要它。这可能是你的问题,因为添加额外的字符会破坏正常的图像。

如果您坚持保留'addslashes',请尝试在'stripslashes'调用中将数据库中的图像数据包装起来以扭转'addslashes'的效果。

因此,要么:

$imgData = file_get_contents($_FILES['image']['tmp_name']); 

或者

$encoded_image = base64_encode(stripslashes($image)); 

我推荐的第一选择。

以上是 如何使用PHP从MYSQL插入和检索图像blob? 的全部内容, 来源链接: utcz.com/qa/266799.html

回到顶部