※ ChatGPTを利用し、要約された質問です(原文:SQLへファイルを格納)
PHP+MySQLを利用してファイルをアップロードし、データベースに格納する方法
このQ&Aのポイント
PHP+MySQLを使用してフォームからファイルをアップロードし、それをデータベースに格納するプログラムを作成しています。
データベースの構造は、testテーブルを作成し、ファイルデータをlongblob型で格納し、拡張子をtext型で保持します。
エラーが発生し、データベースに格納できません。問題の解決方法について教えてください。
PHP+MySQL(接続にはDB.phpを利用)を利用してフォームからファイルを
アップしてそれをDBに格納するプログラムを組んでいるのですが
データベースの構造は
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`filedata` longblob,
`kaku` text collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
下記がそのプログラムの処理部分です。
$data = file_get_contents($_FILES['upfile']['tmp_name']);
$sql ="INSERT INTO test(filedata,kaku) VALUES('$data','$kaku')";
$DbObj->DBSQL($sql);
・$DbObj
DB.phpを利用してのデータベース接続オブジェクト(クラス)で
クラスの中身は商用のWebアプリの開発用のため掲示できませんが
この処理以外は正常に動いています。
$sql ="INSERT INTO test(filedata,kaku) VALUES('11','$kaku')";
では正常動作確認しています。
・$kaku
ファイルの拡張子を格納している(拡張子はファイルを取りだ時に利用)
主キーはauto_incrementを利用しているのでINSERT文で設定の必要なし。
って状況で実行をすると
DB Error: syntax error
とエラーをはき処理できません。
どのようにしたらデータベースに格納できのでしょうか?