Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示来自php数据库的多个图片_Php_Html_Mysql_Database_Image - Fatal编程技术网

显示来自php数据库的多个图片

显示来自php数据库的多个图片,php,html,mysql,database,image,Php,Html,Mysql,Database,Image,我想知道如何在php文档上显示数据库中的多个图片。我知道如何将一张图片放入mysql并取出其中一张,但我不知道如何取出多张(或全部)。提前谢谢 我的一个php文件如下所示 <html> <head> <title>Upload</title> </head> <form action='pictureuploadtest.php' method='POST' enctype='multipart/form-data'> F

我想知道如何在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>
<?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;

?>

上传
文件:
好的,这里有一些您可以遵循的基本代码,但请阅读最后的粗体注释

您可以使用多个文件输入,如下所示:

<input type='file' name='fileone'>
<input type='file' name='filetwo'>
...
然后在拉出图像时循环选择:

while ($row = mysql_fetch_assoc($image)) {
... the rest of your fetch code ...
}
但是您不应该(几乎不应该)在数据库中存储图像

映像应存储在文件系统上,原因如下:

  • 该文件系统将更高效、更快:系统上带有web服务器的文件系统上的映像可以直接将映像从文件系统拉到web服务器,并直接发送给用户。在数据库中,它更多的是从文件系统,通过数据库层(可能通过网络)到web服务器,再到用户
  • 你不想打扰你的数据库),它可以做各种令人敬畏和印象深刻的事情,比如连接和子选择(如果它没有被浪费的话,直接拉大的二进制图像块)和一些琐碎的事情,比如存储和检索图像
  • 使用数据库的效率(在磁盘空间上)较低,尽管随着存储成本接近0,这一问题变得越来越少

  • 帮自己一个忙,不要将图像放在数据库中,只保留它们的名称\path这是正确的做法:不要将图像存储在数据库中。但我在下面为您的问题提供了一个技术答案:)在数据库中存储图像有很多原因……例如负载平衡环境(即:多个web服务器)简单的记录完整性,如单独保存数据库服务器的备份,要比同步保存数据库服务器和文件系统的备份容易得多。数据库的负载平衡(在服务器本身上)要比简单地添加另一个web服务器和进行一些循环传递来进行负载平衡困难得多。为此,您可以使用共享或rsynced文件系统。使用DB的唯一真正原因是,如果您想在DB中对图像进行版本设置并在其上设置删除标志或其他内容。互联网上最大的站点使用文件系统,而不是DBs来存储图像。最佳做法。(这在stackoverflow上得到了很多回答)所以我不太确定双输入的作用以及它将如何影响代码。另外,如果我想在不同的页面上显示它们,我会怎么做。再次感谢@MattPavelleHi@user2433384——因此,有两个输入只是说明如何一次上传两个图像的一种非常基本的方法。基本上,HTML表单有两个地方可以选择要上载的文件。然后,当您保存到数据库时,您将同时保存这两个图像(最好检查每个图像是否都有值),等等。如果您希望在不同的页面上显示每个图像,您可能希望使用逻辑来指定哪个图像显示在哪个页面上,但这远离了一个简单的问题,更深入到“请为我构建此”领域:)
    while ($row = mysql_fetch_assoc($image)) {
    ... the rest of your fetch code ...
    }