teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

更新致しました。プログラミング初心者で不手際が多いですが、ご了承ください。宜しくお願いいたします。

2021/11/21 03:49

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,28 +1,119 @@
1
+ uping.php
1
2
  ```
2
3
 
4
+ <HTML>
5
+ <HEAD>
6
+ <META http-equiv="Content-Type" content="text/html; charset=utf-8">
7
+ <TITLE>データベースへの画像の格納</TITLE>
8
+ </META>
9
+ </HEAD>
10
+ <P>ファイルのアップロード</P>
11
+ <BODY>
12
+ <FORM method="POST" enctype="multipart/form-data" action="uping.php">
13
+ <INPUT type="hidden" name="MAX_FILE_SIZE" value="1080000">
14
+ 画像のファイル名を入力してください(最大64KByte)<BR>
15
+ ファイル名:<INPUT type="text" name="file_name"><BR>
16
+ パス:<INPUT size="30" type="file" name="upfile"><BR>
17
+ <BR>
18
+ <INPUT type="submit" name="submit" value="送信">
19
+ <INPUT type="reset" name="reset" value="リセット">
20
+ </INPUT></INPUT></BR></BR></INPUT></BR></INPUT></BR></INPUT>
21
+ </FORM>
22
+
23
+ <?php
24
+ if(isset($_POST["submit"])){
25
+ try{
26
+ $dsn = 'mysql:dbname=;host=';
27
+ $user = '';
28
+ $password = '';
29
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
30
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
31
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
32
+ print "<hr>";
33
+
34
+ $file_name = $_POST["file_name"];
35
+ $imgdat = file_get_contents($_FILES["upfile"]["tmp_name"]);
36
+
37
+ $sql = "INSERT INTO picture (name,data,type) values (?,?,?)";
38
+ $stmt = $dbh->prepare($sql);
39
+ $data[] = $file_name;
40
+ $data[] = $imgdat;
41
+ $data[] = mime_content_type($_FILES["upfile"]["tmp_name"]);
42
+ $stmt->execute($data);
43
+ $dbh = null; //データベースから切断
3
-
44
+ }
45
+ catch(PDOException $e){
46
+ print 'サーバが停止しておりますので暫くお待ちください。';
47
+ exit();
48
+ }
49
+ }
50
+
51
+
52
+ ?>
53
+ </BODY>
54
+ </HTML>
55
+ ```
56
+ display.php
57
+ ```
4
58
  <?php
5
- //画像
59
+ try{
6
- $dbname='*****';
7
- $dsn = 'mysql:dbname='.$dbname.';host=****;charset=utf8mb4';
60
+ $dsn = 'mysql:dbname=;host=';
8
- $user = '****';
61
+ $user = '';
9
- $password = '****';
62
+ $password = '';
10
- $dbh = new PDO($dsn, $user, $password);
63
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
64
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
65
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
11
66
 
67
+ $sql = "SELECT * FROM picture";
68
+ $stmt_pic = $dbh->prepare ( $sql );
69
+ $stmt_pic->execute ();
70
+ $row = $stmt_pic->fetchAll ( PDO::FETCH_BOTH );
71
+ $dbh = null; //データベースから切断
72
+ }
73
+ catch(PDOException $e){
74
+ die($e->getMessage());
75
+ print 'サーバが停止しておりますので暫くお待ちください。';
76
+ exit();
77
+ }
78
+ foreach($row as $data){
79
+ echo '<img src="image.php?id='.$data["id"].'"><br>'.PHP_EOL;
80
+ }
81
+ ?>
82
+ ```
83
+ image.php
84
+ ```
85
+ <?php
86
+ $sql = "SELECT * FROM img where id=?";
87
+ $stmt_pic = $dbh->prepare ( $sql );
88
+ $stmt_pic->execute ([$_GET["id"]]);
89
+ $row = $stmt_pic->fetch(PDO::FETCH_ASSOC);
90
+ // header("Content-Type: ".$row["type"]);
91
+ // print $row["image"];
92
+
93
+
94
+ try{
95
+ $dsn = 'mysql:dbname=;host=';
96
+ $user = '';
97
+ $password = '';
98
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
99
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
100
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
12
101
 
13
- $sql_select = "SELECT ext,img FROM images WHERE id = ?";
102
+ $sql = "SELECT * FROM picture where id=?";
14
- $result1=$dbh->prepare($sql_select);
103
+ $stmt_pic = $dbh->prepare ( $sql );
15
- //パラメータをセット
16
- $id=1;
17
- $result1->bindparam(1,$id,PDO::PARAM_INT);
104
+ $stmt_pic->execute ([$_GET["id"]]);
18
- $result1->execute();
19
- $row = $result1 -> fetch(PDO::FETCH_ASSOC);
105
+ $row = $stmt_pic->fetch(PDO::FETCH_ASSOC);
20
- //取得した画像バイナリデータをbase64で変換。
106
+ $dbh = null; //データベースから切断
107
+ }
108
+ catch(PDOException $e){
109
+ die($e->getMessage());
21
- $img = base64_encode($row['img']);
110
+ print 'サーバが停止しておりますので暫くお待ちください。';
111
+ exit();
112
+ }
22
113
 
114
+ header("Content-Type: ".$row["type"]);
115
+ print $row["data"];
23
116
  ?>
24
-
25
- <img src="data:<?php echo $row['ext'] ?>;base64,<?php echo $img; ?>
26
117
  ```
27
118
  ### 前提・実現したいこと
28
119
  mysqlに画像を入れ、base64にて画像をエンコードし、PHP、HTMLで画像表示することに取り組んでいます。