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

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

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

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

PHP

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

Q&A

0回答

742閲覧

PHPでデータベースに画像を保存してアップロードするやり方がわからない。

tamachin

総合スコア2

MySQL

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

PHP

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

0グッド

0クリップ

投稿2021/11/19 02:49

編集2021/11/19 06:24

前提・実現したいこと

PHPでデータベースに画像を保存してアップロードしたい。

発生している問題・エラーメッセージ

処理を作ってみたが、うまくいかない。

該当のソースコード

PHP ソースコード function insert_item($link) { if ($_SERVER['REQUEST_METHOD'] !== 'POST') { return; } if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['sql_kind'] === 'insert') { if (isset($_POST['new_name']) === TRUE) { $new_name = $_POST['new_name']; } var_dump($_POST['new_name']); if (isset($_POST['new_price']) === TRUE) { $new_price = $_POST['new_price']; } var_dump($_POST['new_price']); $img_path = '../file/'; $image = file_get_contents( $img_path ); var_dump($img_path); $upload = move_uploaded_file($_FILES['file']['tmp_name'], $image); if (isset($_POST['new_status']) === TRUE) { if ((int) $_POST['new_status'] === 0 || (int) $_POST['new_status'] === 1) { $new_status = (int) $_POST['new_status']; } } var_dump($_POST['new_status']); $new_time = date('Y-m-d H:i:s'); var_dump($new_time); $sql = 'INSERT INTO item(name, price, img, status, created_date, updated_date) VALUES(\''.$new_name.'\',\''.$new_price.'\',\''.$upload.',\'\''.$new_status.'\',\''.$new_time.'\',\''.$new_time.'\')'; var_dump($sql); if ($result = mysqli_query($link, $sql) === TRUE) { } else { $err_msg[] = 'DBエラーが発生しました。'; return $err_msg; } } } 画像のディレクトリは取れていますが、肝心のアップロードが出来てないです。 HTML <!DOCTYPE html> <?php require_once('../../htdocs/mvc/tool.php');?> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ECサイト</title> </head> <body> <h1>ECサイト</h1> <section> <h2>新規商品追加</h2> <form action="tool.php" method="post" enctype="multipart/form-data"> <label>名前: <input type="text" name="new_name" size="30" /></label><br> <label>値段: <input type="text" name="new_price" size="30" /></label><br> <label>個数: <input type="text" name="new_stock" size="30" /></label><br> <input type="file" name="new_img" accept="image/jpeg, image/png, image/gif" /><br> <img src="../../file/ダウンロード.png"> <select name="new_status"><br> <option value="0">非公開</option> <option value="1">公開</option> <option value="2">入力チェック用</option> </select><br> <input type="hidden" name="sql_kind" value="insert"> <input type="submit" name="add" value="■□■□商品追加■□■□" /> </form> </section> <section> <h2>商品情報変更</h2> <table> <caption>商品一覧</caption> <tbody> <tr> <th>商品名</th> <th>価格</th> <th>在庫数</th> <th>ステータス</th> </tr> <?php if (empty($data) !== TRUE) { foreach ((array)$data as $list) { if ((int) $list['status'] === 0) { ?> <tr class="status_0"> <?php } else { ?> <tr> <?php } ?> <? php print htmlspecialchars($list,ENT_QUOTES,'UTF-8'); ?> <td><img class="img" src="<?PHP print $list['img']; ?>"></td> <td class="d_name"><?php print $list['name']; ?></td> <td class="d_price"><?php print $list['price']; ?></td> <td> <form method="post"> <!--<input type="text" class="input_text_width text_align_right" name="stock" value="<?php print $list['stock']; ?>">個--> <!--<br>--> <input type="submit" name="renew" value="変更"> <input type="hidden" name="sql_kind" value="update"> </form> </td> <?php if ((int) $list['status'] === 0) { ?> <td class="d_status"> <form method="post"> <input type="submit" name="change" value="非公開 → 公開"> <input type="hidden" name="change_status" value="1"> <input type="hidden" name="sql_kind" value="change"> </form> </td> </tr> <?php } else { ?> <td class="d_status"> <form method="post"> <input type="submit" name="change" value="公開 → 非公開"> <input type="hidden" name="change_status" value="0"> <input type="hidden" name="sql_kind" value="change"> </form> </td> </tr> <?php } } } ?> </tbody> </table> </section> </body> </html>

試したこと

https://ryou1214.hatenadiary.org/entry/20120309/1331306992
https://qiita.com/ryo-futebol/items/11dea44c6b68203228ff
上記のサイトを参考にしました。

補足情報(FW/ツールのバージョンなど)

Cloud9

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

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

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

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

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

BeatStar

2021/11/19 03:38

エラーメッセージが出ているのならメッセージぐらい読みましょう。 画像で提示されていますが、環境によっては読みづらいです。 テキストと同じように書くべきです。
m.ts10806

2021/11/19 03:55

htmlどうなってるのでしょう
yambejp

2021/11/19 04:11

>PHPでデータベースに画像を保存してアップロードしたい。 >イメージ要素に画像のディレクトリを変数で入れる。 ちょっと意味不明ですね データベースに保持するのは画像ファイルの中身ではなく、画像を別途アップロードしたディレクトリなんですか? ファイル名はどうしているのでしょうか?
FKM

2021/11/19 06:02 編集

DBに格納しておきたいものはなんでしょうか? 画像の場所を示したパスなのでしょうか(これが一般的ですが)、それともBLOB化などをした画像そのものなのでしょうか(あまり推奨できません)。
tamachin

2021/11/19 06:04

今質問修正します。
yambejp

2021/11/19 06:10

$uploaddirが唐突にでてきてませんか?
tamachin

2021/11/19 06:23

案1と案2全くの別物です。ややこしいので片方消します
yambejp

2021/11/19 06:35 編集

$img_path = '../file/'; $image = file_get_contents( $img_path ); あたりなにをしたいかわかりません 説明してください
m.ts10806

2021/11/19 20:18

move_uploaded_file() はcopy()とほぼイコールと思って良いです。 移動元パス→移動先パス ファイル実体は不要です(それに現状のコードだと$img_pathとしながらディレクトリ取得してますし)
tamachin

2021/12/02 02:46

move_uploaded_file($_FILES['new_img']['tmp_name'],)について詳しく教えていただきたいです
tamachin

2021/12/02 02:47

tmp_nameのファイルの指定の仕方がわかりません。
m.ts10806

2021/12/02 03:59

tmp_nameはFILEが持ってる属性です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問