从数据库php显示多张图片

时间:2013-08-08 00:51:48

标签: php html mysql database image

我想知道如何在php文档中显示数据库中的多张图片。我知道锄头将图片放入mysql并取出其中一个,但我不知道如何取出多个(或全部)。提前谢谢。

我的一个php文件看起来像这样

<html>
<head>
<title>Upload</title>
</head>

<form action='pictureuploadtest.php' method='POST' enctype='multipart/form-data'>
File: <input type='file' name='fileone'>
<input type = 'submit' name='submitfile'>
</form>

<?php
$con = mysql_connect("localhost", "username", "password") or die("Cannot connect: ".mysql_error());
mysql_select_db("testpicture") or die("Cannot connect to db: ".mysql_error());

$file = $_FILES['fileone']['tmp_name'];

if(!isset($file)) {
print "Choose an image";
} else {
$image = addslashes(file_get_contents($_FILES['fileone']['tmp_name']));
$imagename = addslashes($_FILES['fileone']['name']);
$imagesize = getimagesize($_FILES['fileone']['tmp_name']);


if($imagesize === false) {
echo "Invalid image.";
} else {
$insert = "INSERT INTO upload VALUES ('', '$imagename', '$image')";
if(mysql_query($insert, $con)) {
    $lastid = mysql_insert_id();
    echo "Image uploaded. <p /> Your image: <p /> <img src=getpic.php?id=$lastid width='300px' height='300px'>";
} else {
    echo "Cannot upload image: ".mysql_error();
}
}
}


?>

</html>

然后getpic.php看起来像这样

<?php
mysql_connect("localhost", "username", "password") or die("Cannot connect: ".mysql_error());
mysql_select_db("testpicture") or die("Cannot connect to db: ".mysql_error());


$id = addslashes($_REQUEST['id']);

$image = mysql_query("SELECT * FROM upload WHERE id=$id");
$image = mysql_fetch_assoc($image);
$image = $image['image'];


echo $image;

?>

因此,此代码可以告诉用户上传图像,然后在将图像添加到数据库后显示该图像,但如何在数据库中显示多个或所有图片。

提前致谢。

1 个答案:

答案 0 :(得分:1)

好的,这里有一些你可以遵循的非常基本的代码,但请在最后阅读 BOLD NOTE

您可以使用多个文件输入:

<input type='file' name='fileone'>
<input type='file' name='filetwo'>
...

然后你会为每个上传的文件调用你的插入(或者最好循环,但这更符合上面的多个输入):

$file = $_FILES['fileone']['tmp_name'];
... the rest of the insert code ...

$file = $_FILES['filetwo']['tmp_name'];
... the rest of the insert code ...

然后在拉出图像时循环选择:

while ($row = mysql_fetch_assoc($image)) {
... the rest of your fetch code ...
}

但你永远不应该(几乎从不)在数据库中存储图像!

图像应存储在文件系统中,原因如下:

  1. 文件系统将更高效,更快:系统上带有Web服务器的文件系统上的映像可以直接将文件从文件系统提取到Web服务器,直接输出给用户。在数据库中,它更多地是从文件系统,通过数据库层(可能通过网络)到Web服务器,然后是用户。
  2. 你不想打扰你的数据库)这可以做各种令人敬畏和令人印象深刻的事情,如连接和子选择 - 如果它不是浪费直接拉大图像的二进制blob)与存储和检索图像这样的微不足道的东西
  3. 使用数据库的效率(在磁盘空间上)效率较低,但随着存储成本接近0,这实际上变得越来越少。