質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

4272閲覧

PHP フォームで画像をアップロードし、その画像名をDBに挿入する方法

nsking

総合スコア7

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/12/23 08:12

「よくわかるPHPの教科書」という書籍を参考に、商品登録フォームに、画像をアップロードし表示する機能をつけたいと思っています。

しかし、画像のアップロードまではうまく行くのですが、アップロードした画像の画像名をSQLを使ってDBに挿入する点でつまずいています。(Undefined index: image_pathというエラーが出ます)

どうぞご教授のほど宜しくお願いいたします。

HTML

1【index.html】 フォームの箇所を抜粋 2 3<p>登録する商品の情報</p> 4<form id="frmInput" name="frmInput" method="post" action="input_do.php" enctype="multipart/form-data"> 5 <dl> 6 <dt><label for="maker_id">メーカーID</label></dt> 7 <dd><input name="maker_id" type="text" id="maker_id" size="10" maxlength="10"></dd> 8 9 <dt><label for="item_name">商品名</label></dt> 10 <dd><input name="item_name" type="text" id="item_name" size="35" maxlength="255"></dd> 11 12 <dt><label for="price">価格</label></dt> 13 <dd><input name="price" type="text" id="price" size="10" maxlength="10"></dd> 14 15 <dt><label for="keyword">キーワード</label></dt> 16 <dd><input name="keyword" type="text" id="keyword" size="50" maxlength="255"></dd> 17 18 <dt><label for="image_path">写真</label></dt> 19 <dd><input name="image_path" type="file" id="image_path" size="50"></dd> 20 21 </dl> 22 23<input type="submit" value="登録する"> 24 25</form> 26

PHP

1【input_do.php】 2 3<?php 4 require('dbconnect.php'); 5 6//ファイルのチェックとアップロード 7$file = $_FILES['image_path']; 8 9$ext = substr($file['name'], -4); 10if ($ext == '.gif' || $ext == '.jpg' || $ext == '.png') { 11 $filePath = './images/' . $file['name']; 12 move_uploaded_file($file['tmp_name'], $filePath); 13 print('<img src="' . $filePath . '" />'); 14} else { 15 print('※拡張子が.gif, .jpg, .pngのいずれかのファイルをアップロードしてください'); 16} 17?> 18 19 20<?php 21//SQLでDBに情報を挿入 22 23$sql=sprintf('INSERT INTO my_items SET maker_id=%d,item_name="%s",price=%d,keyword="%s",image_path="%s"', 24mysqli_real_escape_string($db, $_POST['maker_id']), 25mysqli_real_escape_string($db, $_POST['item_name']), 26mysqli_real_escape_string($db, $_POST['price']), 27mysqli_real_escape_string($db, $_POST['keyword']), 28mysqli_real_escape_string($db, $_POST['image_path']) 29); 30 31mysqli_query($db,$sql)or die(mysqli_error($db)); 32?> 33

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHP: POST メソッドによるアップロード - Manual
http://php.net/manual/ja/features.file-upload.post-method.php

によると、

$_FILES['userfile']['name']に元のファイル名が入るようです。
質問にあるフォームに照らし合わせると$_FILES['image_path']['name']となるでしょうか。

参考:ファイルのアップロード | PHP Labo
http://www.php-labo.net/tutorial/php/upload.html
参考:phpの$_FILESについてのメモ - Webtech Walker
http://webtech-walker.com/archive/2007/09/20143717.html

投稿2015/12/23 08:31

編集2015/12/23 08:33
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nsking

2015/12/23 08:51

参考ページまでいただき、ありがとうございます! こちらで解決しそうです。感謝です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問