PHP - 将图像插入数据库

时间:2013-12-17 21:06:03

标签: javascript php mysql sql mysqli

你好我的同事编码好友。

我需要一些帮助,我遇到了这个问题。 我有这个数据库,我想通过JS将这些数据反转到我的代码中。

我的数据库信息:

create table datadatabase (
id              int(10)  not null AUTO_INCREMENT PRIMARY KEY,
name            varchar(25) not null default '',
text            longtext(25) not null default '',
image           blob        not null  );

我希望数据进入这些领域。

<img src="<?php echo $img ?>"/>
<h3> <?php echo $text.','.$name  ?>  </h3>

但问题是,文字&amp;图像是一个滑块,每当有一个功能点击“下一步”按钮时,我想要检索新数据 ID应该是随机的,因此第一张幻灯片可以是id 99,下一张幻灯片可以是158,依此类推。

$('.Next').click(function(e) {
 e.preventDefault();
 Slide.appendSlide('<img src"<?php echo $img ?>"/><h3> </h3>') 
})

我该如何处理? 非常感谢你。 :)

2 个答案:

答案 0 :(得分:1)

首先,将图像存储在数据库中并不是一个好习惯,但如果要这样做,则需要创建一个脚本,从db(即ID)输出特定图像,然后输出原始图像。具有特定内容类型的数据。 (我还建议在其中一个数据库字段中插入图像类型)。

url:/image.php?id = 5 的 image.php

<?php
$id = isset($_GET['id'])?intval($_GET['id']):0;
$query = mysql_query("SELECT img FROM datadatabase WHERE id = '$id'");
$row = mysql_fetch_array($query);
if($type=="pjpeg")
$type="jpeg"; // the type could change depending on the database image type
header("Content-type:$type");
echo $row['image'];
?>

对于其他字段,只需像往常一样读取数据库。结果:

<img src="http://..../image.php?id=<?php echo $id ?>"/>
<h3> <?php echo $text.','.$name  ?>  </h3>

$('.Next').click(function(e) {
 e.preventDefault();
 Slide.appendSlide('<img src"http://..../image.php?id=<?php echo $id?>"/><h3> </h3>') 
});

建议在上传之前实现缓存和图像大小调整,以避免服务器负载。

还有其他一些方法,比如base64。我更喜欢自己使用带有图像元数据的文件系统,而不是仅使用数据库进行图像存储,以使其可扩展。

答案 1 :(得分:-1)

Insert.php:

$bin_string = file_get_contents($_FILES["file"]["name"]);
$mysqli->query("INSERT INTO upload(image) VALUES ('" . $bin_string . "')");

Retrieve.php?id = 1:

$result = $mysqli->query("SELECT * FROM upload id=1");
$output_bin_string = $result["image"];
header("Content-Type: image/png");
header("Content-Length: " . strlen($output_bin_string ));       
echo $output_bin_string;

通过Js访问:

 <img src="Retrieve.php?id=1" />