使用php和mysqli显示和上传图像

时间:2017-12-04 13:31:41

标签: php mysql image upload

我正在尝试显示我上传到MySQL数据库的图像。 上传过程运作正常,但我在显示时遇到问题,而且我不知道自己哪里出错了。

这是我的DB:

 CREATE TABLE `data` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `dozent` varchar(32) NOT NULL DEFAULT '',
  `datum` date NOT NULL,
  `text` text NOT NULL,
  `Ort` varchar(45) NOT NULL DEFAULT '',
  `gastvortraege` varchar(30) NOT NULL DEFAULT '',
  `src` blob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

我上传的数据将使用以下代码插入:

require("vortraege_db.php");

$stmt = $con->stmt_init();

$name = mysqli_real_escape_string($con,$_POST['name']);
$title = mysqli_real_escape_string($con,$_POST['titel']);
$text = mysqli_real_escape_string($con,$_POST['text']);
$ort = mysqli_real_escape_string($con,$_POST ['ort']);
$date = mysqli_real_escape_string($con,$_POST['datum']);

$path = $_FILES['image']['tmp_name'];

if(isset($_POST['gast']))
    $uniname = mysqli_real_escape_string($con,$_POST['gast_text']);
else {
    $uniname = mysqli_real_escape_string($con,'');
}

$image = file_get_contents($path);
$image = mysqli_real_escape_string($con, $image);


$stmt->prepare("INSERT INTO data(dozent,datum,`text`,Ort,gastvortraege,src) VALUES(?,?,?,?,?,?)");
$stmt->bind_param('sssssb',$name,$date,$text,$ort,$uniname,$image);
$result = $stmt->execute();

if($result)
    echo "Datensätze erfolgreich hochgeladen";
else {
    echo "Es ist irgendwas schiefgelaufen, bitte erneut versuchen.";
}

出于测试目的,我使用了很多我在stackoverflow上找到的代码片段,这是最新的代码片段:

$sql = "SELECT * FROM  `data`";
$sth = $con->query($sql);
$result=mysqli_fetch_array($sth);
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['src'] ).'"/>';

使用我尝试的所有代码,我得到了相同的结果:白页。

1 个答案:

答案 0 :(得分:0)

您可以尝试更改此行:

echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['src'] ).'"/>';

对此:

foreach($result as $r){
  echo "<img src='".$r['src']."' />";
}