MySQLに画像を登録して表示する

今回はXAMPPを使用してます。

まずMySQLでテーブルを作成します。

CREATE TABLE IMAGES (
	ID	INT        NOT NULL AUTO_INCREMENT,   // ID
	IMG	MEDIUMBLOB NOT NULL,		      // 画像データ
	PRIMARY KEY ( ID )
)


画像の登録画面(img_upload.php)

データベースへのアップロードも同時に行います。

<HTML>
<HEAD>
	<meta charset=UTF-8">
	<title>画像登録&アップロード</title>
</HEAD>
<BODY>
<FORM method="POST" enctype="multipart/form-data" action="img_upload.php">
	<P>画像登録&アップロード</P>
	画像パス:<INPUT type="file" name="upfile" size="30"><BR>
	<INPUT type="submit" name="submit" value="送信">
</FORM>

<?php

if (count($_POST) > 0 && isset($_POST["submit"])){
	$upfile = $_FILES["upfile"]["tmp_name"];
	if ($upfile==""){
		print("ファイルのアップロードができませんでした。<BR>");
		exit;
	}

	// ファイル取得
	$imgdat = file_get_contents($upfile);
	$imgdat = mysql_real_escape_string($imgdat);

	// DB接続
	$dbLink = mysql_connect("ホスト名","ユーザー名","パスワード");
	if (!$dbLink){
		echo "接続失敗";
	}
        // DB選択
	mysql_select_db("image",$dbLink);

	// データ追加
	$sql = "INSERT INTO IMAGES (IMG) VALUES ('$imgdat')";

	$result = mysql_query($sql, $dbLink);
	if (!$result){
		print("SQLの実行に失敗しました<BR>");
		print(mysql_errno().": ".mysql_error()."<BR>");
		exit;
	}

	print("登録が終了しました<BR>");
	}
	?>
	</BODY>
	</HTML>

アップロードした画像を表示するためには、表示画面と画像取得の2つが必要です。

画像取得(img_get.php)

<?php
// DB接続
$dbLink = mysql_connect("ホスト名","ユーザー名","パスワード");
	if (!$dbLink){
		echo "接続失敗";
	}
//DB選択
	mysql_select_db("image",$dbLink);

// 画像データ取得
$sql = "SELECT IMG FROM IMAGES WHERE ID = '" . $_GET['id']."'");
$result = mysql_query($sql, $dbLink);
$row = mysql_fetch_row($result);

// 画像ヘッダとしてjpegを指定(取得データがjpegの場合)
header("Content-Type: image/jpeg");

// バイナリデータを直接表示
echo $row[0];
?>

画像表示(display.php)

<HTML>
<HEAD>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>画像表示</title>
</HEAD>
<BODY>
<FORM method="POST" action="display.php">
	<P>画像の表示</P>
	ID:<INPUT type="text" name="id">
	<INPUT type="submit" name="submit" value="送信">
	<BR><BR>
</FORM>

<?php
if (count($_POST) > 0 && isset($_POST["submit"])){
	$id = $_POST["id"];
	if ($id==""){
		print("IDが入力されていません。<BR>\n");
	} else {
		print("<img src=\"img_get.php?id=" . $id . "\">");
	}
}
?>
</BODY>
</HTML>

画像表示画面で、IDを入力すると画像が表示されます。