我正在尝试显示我上传到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'] ).'"/>';
使用我尝试的所有代码,我得到了相同的结果:白页。
答案 0 :(得分:0)
您可以尝试更改此行:
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['src'] ).'"/>';
对此:
foreach($result as $r){
echo "<img src='".$r['src']."' />";
}