質問編集履歴

6

プログラム修正

2021/11/16 03:29

投稿

Masa_1321412
Masa_1321412

スコア12

test CHANGED
File without changes
test CHANGED
@@ -192,7 +192,7 @@
192
192
 
193
193
 
194
194
 
195
- $sql = "SELECT * FROM img where id=?";
195
+ $sql = "SELECT * FROM picture where id=?";
196
196
 
197
197
  $stmt_pic = $dbh->prepare ( $sql );
198
198
 
@@ -218,7 +218,7 @@
218
218
 
219
219
  header("Content-Type: ".$row["type"]);
220
220
 
221
- print $row["image"];
221
+ print $row["data"];
222
222
 
223
223
  ?>
224
224
 
@@ -226,12 +226,6 @@
226
226
 
227
227
 
228
228
 
229
- 以下のように画像がエラーになります
230
-
231
- ![イメージ説明](e1be70276bb3db5500d5df99bf33d3f1.png)
232
-
233
-
234
-
235
229
  ### 補足情報(FW/ツールのバージョンなど)
236
230
 
237
231
  データベースの構造は以下のようになります

5

内容変更

2021/11/16 03:29

投稿

Masa_1321412
Masa_1321412

スコア12

test CHANGED
File without changes
test CHANGED
@@ -224,61 +224,7 @@
224
224
 
225
225
  ```
226
226
 
227
- ### 試したこと
227
+
228
-
229
- 最後の行のhtmlの部分をphpにいれてforeachで繰り返せばできるかと思い
230
-
231
- 以下のように書いてみたのですが
232
-
233
- ```
234
-
235
- <?php
236
-
237
- try{
238
-
239
- $dsn = 'mysql:dbname=map;host=localhost';
240
-
241
- $user = 'root';
242
-
243
- $password = '';
244
-
245
- $dbh = new PDO($dsn, $user, $password); //データベースに接続
246
-
247
- $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
248
-
249
- $dbh->query('SET NAMES utf8'); //文字コードのための設定
250
-
251
-
252
-
253
- $sql = "SELECT * FROM picture";
254
-
255
- $stmt_pic = $dbh->prepare ( $sql );
256
-
257
- $stmt_pic->execute ();
258
-
259
- $row = $stmt_pic->fetch ( PDO::FETCH_BOTH );
260
-
261
- $img = base64_encode($row['data']);
262
-
263
- $dbh = null; //データベースから切断
264
-
265
- }
266
-
267
- catch(PDOException $e){
268
-
269
- die($e->getMessage());
270
-
271
- print 'サーバが停止しておりますので暫くお待ちください。';
272
-
273
- exit();
274
-
275
- }
276
-
277
- echo '<img src="data:'.$row['type'].';base64,'.$img.';"><br>';
278
-
279
- ?>
280
-
281
- ```
282
228
 
283
229
  以下のように画像がエラーになります
284
230
 

4

プログラム修正

2021/11/16 03:23

投稿

Masa_1321412
Masa_1321412

スコア12

test CHANGED
File without changes
test CHANGED
@@ -136,7 +136,7 @@
136
136
 
137
137
  $dbh->query('SET NAMES utf8'); //文字コードのための設定
138
138
 
139
-
139
+
140
140
 
141
141
  $sql = "SELECT * FROM picture";
142
142
 
@@ -144,6 +144,118 @@
144
144
 
145
145
  $stmt_pic->execute ();
146
146
 
147
+ $row = $stmt_pic->fetchAll ( PDO::FETCH_BOTH );
148
+
149
+ $dbh = null; //データベースから切断
150
+
151
+ }
152
+
153
+ catch(PDOException $e){
154
+
155
+ die($e->getMessage());
156
+
157
+ print 'サーバが停止しておりますので暫くお待ちください。';
158
+
159
+ exit();
160
+
161
+ }
162
+
163
+ foreach($row as $data){
164
+
165
+ echo '<img src="image.php?id='.$data["id"].'"><br>'.PHP_EOL;
166
+
167
+ }
168
+
169
+ ?>
170
+
171
+ ```
172
+
173
+ ### image.php
174
+
175
+ ```
176
+
177
+ <?php
178
+
179
+ try{
180
+
181
+ $dsn = 'mysql:dbname=map;host=localhost';
182
+
183
+ $user = 'root';
184
+
185
+ $password = '';
186
+
187
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
188
+
189
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
190
+
191
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
192
+
193
+
194
+
195
+ $sql = "SELECT * FROM img where id=?";
196
+
197
+ $stmt_pic = $dbh->prepare ( $sql );
198
+
199
+ $stmt_pic->execute ([$_GET["id"]]);
200
+
201
+ $row = $stmt_pic->fetch(PDO::FETCH_ASSOC);
202
+
203
+ $dbh = null; //データベースから切断
204
+
205
+ }
206
+
207
+ catch(PDOException $e){
208
+
209
+ die($e->getMessage());
210
+
211
+ print 'サーバが停止しておりますので暫くお待ちください。';
212
+
213
+ exit();
214
+
215
+ }
216
+
217
+
218
+
219
+ header("Content-Type: ".$row["type"]);
220
+
221
+ print $row["image"];
222
+
223
+ ?>
224
+
225
+ ```
226
+
227
+ ### 試したこと
228
+
229
+ 最後の行のhtmlの部分をphpにいれてforeachで繰り返せばできるかと思い
230
+
231
+ 以下のように書いてみたのですが
232
+
233
+ ```
234
+
235
+ <?php
236
+
237
+ try{
238
+
239
+ $dsn = 'mysql:dbname=map;host=localhost';
240
+
241
+ $user = 'root';
242
+
243
+ $password = '';
244
+
245
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
246
+
247
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
248
+
249
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
250
+
251
+
252
+
253
+ $sql = "SELECT * FROM picture";
254
+
255
+ $stmt_pic = $dbh->prepare ( $sql );
256
+
257
+ $stmt_pic->execute ();
258
+
147
259
  $row = $stmt_pic->fetch ( PDO::FETCH_BOTH );
148
260
 
149
261
  $img = base64_encode($row['data']);
@@ -162,75 +274,15 @@
162
274
 
163
275
  }
164
276
 
277
+ echo '<img src="data:'.$row['type'].';base64,'.$img.';"><br>';
278
+
165
279
  ?>
166
280
 
167
- <!-- エンコードした情報をimgタグに表示 -->
168
-
169
- <img src="data:<?php echo $row['type'] ?>;base64,<?php echo $img; ?>"><br>
170
-
171
- ```
172
-
173
-
174
-
175
- ### 試したこと
176
-
177
- 最後の行のhtmlの部分をphpにいれてforeachで繰り返せばできるかと思い
178
-
179
- 以下のように書いてみたのですが
180
-
181
- ```
182
-
183
- <?php
184
-
185
- try{
186
-
187
- $dsn = 'mysql:dbname=map;host=localhost';
188
-
189
- $user = 'root';
190
-
191
- $password = '';
192
-
193
- $dbh = new PDO($dsn, $user, $password); //データベースに接続
194
-
195
- $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
196
-
197
- $dbh->query('SET NAMES utf8'); //文字コードのための設定
198
-
199
-
200
-
201
- $sql = "SELECT * FROM picture";
202
-
203
- $stmt_pic = $dbh->prepare ( $sql );
204
-
205
- $stmt_pic->execute ();
206
-
207
- $row = $stmt_pic->fetch ( PDO::FETCH_BOTH );
208
-
209
- $img = base64_encode($row['data']);
210
-
211
- $dbh = null; //データベースから切断
212
-
213
- }
214
-
215
- catch(PDOException $e){
216
-
217
- die($e->getMessage());
218
-
219
- print 'サーバが停止しておりますので暫くお待ちください。';
220
-
221
- exit();
222
-
223
- }
224
-
225
- echo '<img src="data:'.$row['type'].';base64,'.$img.';"><br>';
226
-
227
- ?>
228
-
229
281
  ```
230
282
 
231
283
  以下のように画像がエラーになります
232
284
 
233
- ![イメージ説明](c3558c6fded75cd0d2d530048d618e63.png)
285
+ ![イメージ説明](e1be70276bb3db5500d5df99bf33d3f1.png)
234
286
 
235
287
 
236
288
 

3

修正

2021/11/16 03:13

投稿

Masa_1321412
Masa_1321412

スコア12

test CHANGED
File without changes
test CHANGED
@@ -176,9 +176,57 @@
176
176
 
177
177
  最後の行のhtmlの部分をphpにいれてforeachで繰り返せばできるかと思い
178
178
 
179
- 以下の行をphp内に書いてみたのですが
179
+ 以下のように書いてみたのですが
180
+
180
-
181
+ ```
182
+
183
+ <?php
184
+
185
+ try{
186
+
187
+ $dsn = 'mysql:dbname=map;host=localhost';
188
+
189
+ $user = 'root';
190
+
191
+ $password = '';
192
+
193
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
194
+
195
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
196
+
197
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
198
+
199
+
200
+
201
+ $sql = "SELECT * FROM picture";
202
+
203
+ $stmt_pic = $dbh->prepare ( $sql );
204
+
205
+ $stmt_pic->execute ();
206
+
207
+ $row = $stmt_pic->fetch ( PDO::FETCH_BOTH );
208
+
209
+ $img = base64_encode($row['data']);
210
+
211
+ $dbh = null; //データベースから切断
212
+
213
+ }
214
+
215
+ catch(PDOException $e){
216
+
217
+ die($e->getMessage());
218
+
219
+ print 'サーバが停止しておりますので暫くお待ちください。';
220
+
221
+ exit();
222
+
223
+ }
224
+
181
- echo '<img src="data:'.$row['name'].';base64,'.$img.';"><br>'
225
+ echo '<img src="data:'.$row['type'].';base64,'.$img.';"><br>';
226
+
227
+ ?>
228
+
229
+ ```
182
230
 
183
231
  以下のように画像がエラーになります
184
232
 

2

プログラム修正

2021/11/15 05:37

投稿

Masa_1321412
Masa_1321412

スコア12

test CHANGED
File without changes
test CHANGED
@@ -72,13 +72,15 @@
72
72
 
73
73
 
74
74
 
75
- $sql = "INSERT INTO picture (name,data) values (?,?)";
75
+ $sql = "INSERT INTO picture (name,data,type) values (?,?,?)";
76
76
 
77
77
  $stmt = $dbh->prepare($sql);
78
78
 
79
79
  $data[] = $file_name;
80
80
 
81
81
  $data[] = $imgdat;
82
+
83
+ $data[] = mime_content_type($_FILES["upfile"]["tmp_name"]);
82
84
 
83
85
  $stmt->execute($data);
84
86
 
@@ -164,7 +166,7 @@
164
166
 
165
167
  <!-- エンコードした情報をimgタグに表示 -->
166
168
 
167
- <img src="data:<?php echo $row['name'] ?>;base64,<?php echo $img; ?>"><br>
169
+ <img src="data:<?php echo $row['type'] ?>;base64,<?php echo $img; ?>"><br>
168
170
 
169
171
  ```
170
172
 
@@ -188,6 +190,6 @@
188
190
 
189
191
  データベースの構造は以下のようになります
190
192
 
191
- ![イメージ説明](11d1d3502377ad808d84a6363e0b0d66.png)
193
+ ![イメージ説明](49430d548fece308d7b9a4546b6ac169.png)
192
194
 
193
- ![イメージ説明](022830ad9b948e41a8f0b38955800d04.png)
195
+ ![イメージ説明](bfb37468cf8c0ba3525c878e3fed9183.png)

1

プログラム追加

2021/11/15 05:32

投稿

Masa_1321412
Masa_1321412

スコア12

test CHANGED
File without changes
test CHANGED
@@ -8,11 +8,115 @@
8
8
 
9
9
 
10
10
 
11
- ### 該当のソースコード
11
+ ### upimg.php (画像をデタベーに登録するコード)
12
12
 
13
13
 
14
14
 
15
+ ```
16
+
15
- ```ここに言語名を入力
17
+ <HTML>
18
+
19
+ <HEAD>
20
+
21
+ <META http-equiv="Content-Type" content="text/html; charset=utf-8">
22
+
23
+ <TITLE>データベースへの画像の格納</TITLE>
24
+
25
+ </HEAD>
26
+
27
+ <P>ファイルのアップロード</P>
28
+
29
+ <BODY>
30
+
31
+ <FORM method="POST" enctype="multipart/form-data" action="upimg.php">
32
+
33
+ <INPUT type="hidden" name="MAX_FILE_SIZE" value="65536">
34
+
35
+ 画像のファイル名を入力してください(最大64KByte)<BR>
36
+
37
+ ファイル名:<INPUT type="text" name="file_name"><BR>
38
+
39
+ パス:<INPUT size="30" type="file" name="upfile"><BR>
40
+
41
+ <BR>
42
+
43
+ <INPUT type="submit" name="submit" value="送信">
44
+
45
+ <INPUT type="reset" name="reset" value="リセット">
46
+
47
+ </FORM>
48
+
49
+
50
+
51
+ <?php
52
+
53
+ if(isset($_POST["submit"])){
54
+
55
+ try{
56
+
57
+ $dsn = 'mysql:dbname=map;host=localhost'; $user = 'root'; $password = '';
58
+
59
+ $dbh = new PDO($dsn, $user, $password); //データベースに接続
60
+
61
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
62
+
63
+ $dbh->query('SET NAMES utf8'); //文字コードのための設定
64
+
65
+ print "<hr>";
66
+
67
+
68
+
69
+ $file_name = $_POST["file_name"];
70
+
71
+ $imgdat = file_get_contents($_FILES["upfile"]["tmp_name"]);
72
+
73
+
74
+
75
+ $sql = "INSERT INTO picture (name,data) values (?,?)";
76
+
77
+ $stmt = $dbh->prepare($sql);
78
+
79
+ $data[] = $file_name;
80
+
81
+ $data[] = $imgdat;
82
+
83
+ $stmt->execute($data);
84
+
85
+ $dbh = null; //データベースから切断
86
+
87
+ }
88
+
89
+ catch(PDOException $e){
90
+
91
+ print 'サーバが停止しておりますので暫くお待ちください。';
92
+
93
+ exit();
94
+
95
+ }
96
+
97
+ }
98
+
99
+
100
+
101
+
102
+
103
+ ?>
104
+
105
+ </BODY>
106
+
107
+ </HTML>
108
+
109
+ ```
110
+
111
+ ![イメージ説明](2c5d70363032b09a369ee1bafa19c178.png)
112
+
113
+
114
+
115
+ ### display.php (画像を表示させるコード)
116
+
117
+
118
+
119
+ ```
16
120
 
17
121
  <?php
18
122