前提・実現したいこと
WEB上で画像を開き、それをデータベースに登録するというプログラムを作成したいです
使用している言語はPHPで使用しているデータベースはMySQLです
発生している問題・エラーメッセージ
以下の画像のようなエラーが出ており、データベースにも画像が登録されていません
データベースの構造については3枚目の画像のようになっています
また、別の様々な画像で試してみたところ上記のエラーが出るものと正常に保存できるものがあることがわかりました
画像はすべてpng型でファイルサイズにおいてもエラーが出るものとほぼ変わりありません
いろいろなサイズ、型の画像で保存を試して原因を探ろうと思います
該当のソースコード
upimg.php <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <TITLE>データベースへの画像の格納</TITLE> </HEAD> <P>ファイルのアップロード</P> <BODY> <FORM method="POST" enctype="multipart/form-data" action="upimg.php"> <INPUT type="hidden" name="MAX_FILE_SIZE" value="65536"> 画像のファイル名を入力してください(最大64KByte)<BR> ファイル名:<INPUT type="text" name="file_name"><BR> パス:<INPUT size="30" type="file" name="upfile"><BR> <BR> <INPUT type="submit" name="submit" value="送信"> <INPUT type="reset" name="reset" value="リセット"> </FORM> <?php if(isset($_POST["submit"])){ try{ $dsn = 'mysql:dbname=map;host=localhost'; $user = 'root'; $password = ''; $dbh = new PDO($dsn, $user, $password); //データベースに接続 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->query('SET NAMES utf8'); //文字コードのための設定 print "<hr>"; $file_name = $_POST["file_name"]; $imgdat = file_get_contents($_FILES["upfile"]["tmp_name"]); $sql = "INSERT INTO picture (name,data) values (?,?)"; $stmt = $dbh->prepare($sql); $data[] = $file_name; $data[] = $imgdat; $stmt->execute($data); $dbh = null; //データベースから切断 } catch(PDOException $e){ print 'サーバが停止しておりますので暫くお待ちください。'; exit(); } } ?> </BODY> </HTML>
補足情報(FW/ツールのバージョンなど)
データベースサーバ
サーバ: 127.0.0.1 via TCP/IP
サーバの種類: MariaDB
サーバの接続: SSLは使用されていません ドキュメント
サーバのバージョン: 10.4.14-MariaDB - mariadb.org binary distribution
プロトコル バージョン: 10
ユーザ: root@localhost
サーバの文字セット: UTF-8 Unicode (utf8mb4)
ウェブサーバー
Apache/2.4.46 (Win64) OpenSSL/1.1.1g PHP/7.4.11
データベースクライアントのバージョン: libmysql - mysqlnd 7.4.11
PHP 拡張: mysqli ドキュメント curl ドキュメント mbstring ドキュメント
PHP のバージョン: 7.4.11
phpMyadmin
バージョン情報: 5.0.3, 最終安定バージョン: 5.1.1
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー