0

PHPドキュメントでデータベースから複数の画像を表示する方法を考えていました。写真をmysqlに入れてそのうちの1つを取り出す方法は知っていますが、複数(またはすべて)を取り出す方法はわかりません。前もって感謝します。

私のphpファイルの1つは次のようになります

<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;

?>

したがって、このコードはユーザーに画像をアップロードし、データベースに追加した後にその画像を表示するように指示できますが、データベース内の複数またはすべての画像を表示するにはどうすればよいですか。

前もって感謝します。

4

1 に答える 1

1

わかりました、これはあなたが従うことができるいくつかの非常に基本的なコードですが、最後に太字の注を読んでください.

次のように複数のファイル入力を使用できます。

<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. データベースは、結合や副選択など、あらゆる種類の素晴らしく印象的なことを行うことができます-画像の大きなバイナリブロブを直接プルするのに無駄でない場合)、画像の保存と取得と同じくらい簡単なことでデータベースを煩わせたくありません.
  3. データベースを使用するのは (ディスク容量に関して) 効率的ではありませんが、ストレージ コストが 0 に近づくにつれ、この問題はますます少なくなっています。
于 2013-08-08T01:00:26.253 に答える