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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

2回答

1393閲覧

MYSQL 画像表示

abcdef

総合スコア6

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2017/05/31 01:52

###前提・実現したいこと
選択した画像をコピーしてフォルダにいれる
###ヘディングのテキスト

PHP

1<?php 2 require 'common.php'; 3 $error = $name =$type =$comment = $price =$pic = ''; 4 $pdo = connect(); 5 if (@$_POST['submit']) { 6 $name = $_POST['nam']; 7 $type = $_POST['typ']; 8 $comment = $_POST['comme']; 9 $price = $_POST['pri']; 10 $pic = $_POST['pice']; 11 if (!$name) $error .= '商品名がありません。<br>'; 12 if (!$type) $error .= '商品の種類がありません。<br>'; 13 if (!$comment) $error .= '商品説明がありません。<br>'; 14 if (!$price) $error .= '価格がありません。<br>'; 15 if (preg_match('/\D/', $price)) $error .= '価格が不正です。<br>'; 16 if (!$pic){ 17 $error .= 'ファイルを選択してください。<br>'; 18 } else { 19 $image = $_FILES['pic']['tmp_name']; 20 } 21 if (!$error) { 22 if(move_uploaded_file($_FILES['pic']['tmp_name'], "images/$image.jpg")){ 23 $pdo->query("INSERT INTO goods(name,type,comment,price,image) VALUES('$name','$type','$comment','$price','$image')"); 24 header('Location: index.php'); 25 exit(); 26 } else { 27 $error .='ファイルをアップロードできません。<br>'; 28 } 29 } 30 } 31 require 't_insert.php'; 32?>

###現在の問題点
上手くif(move_uploaded_file($_FILES['pic']['tmp_name'], "images/$image.jpg"))文が機能せずエラー文としてelseになってしまう

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

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

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

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

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

m.ts10806

2017/05/31 02:15

エラーが出ているのでしたらエラー文も添付してください。
abcdef

2017/05/31 02:41

エラーは表示されませんが「ファイルをアップロードできません。」のelse文が帰ります。
m.ts10806

2017/05/31 02:44

了解です。今の「現在の問題点」だとPHPのエラーが出ているのか自分で出力されているエラーメッセージが出力されているのか分かりにくかったための確認でした。
guest

回答2

0

「images/$image.jpg」の部分で
move_uploaded_file() は「アップロードされたファイルを新しい位置に移動する」ものなので実行しているプログラムファイルから見て「images」ディレクトリが存在しないのだと思います。
サーバー内のディレクトリを指定する場合はDIRなどを利用してプログラムファイルからのパスを正しくアップロードしたいパスに指定した方が良いでしょう。

また、tmp_nameは全く意味のないランダムの文字列がランダムに振られたファイルです。
保存したい情報に紐付けた関連する名前をプログラム側でつけたほうが良いでしょう。
(今回のケースだと商品コードなど)

投稿2017/05/31 02:22

m.ts10806

総合スコア80850

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

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

0

$_FILES['pic']['tmp_name']はエラーがなくアップロードされていると
言う理解でよろしいですか?
print_r($_FILES)で確認できます

であれば移動先のimages/$image.jpgがおかしいのでは?

  • 正しい移動先が指定されていない
  • 移動先へのアクセス権がない

また任意のファイル名で移動すると、競合が発生する可能性があります

それとは別に
$pdo->query()していますが、prepareで処理したほうがいいでしょう
状況がわかりませんが$imageは添付ファイル名ですよね?
そんなものとっておいても何の意味もないですよ

投稿2017/05/31 02:01

yambejp

総合スコア114833

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問