重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

閲覧、ありがとうございます。

MySQLに画像を保存しようとして苦戦しています。
multipart/form-dataオプションをつけてpostし、phpでMySQLに入れようとしています。

header("Content-Type: image/jpeg");
$data = file_get_contents($_FILES['photo']['tmp_name']);
echo $data;

とするとちゃんと画像が表示できるのですが、

$query = mysql_query("insert into img_table (img_field) values $data");
とすると
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' …
と怒られてしまいます。

ためしにphpMyAdminから同じデータをアップロードすると$dataの部分が0xff...となっております。
文字コードの問題も考え、addslashesなどつけているのですがやはりアップロードできません。

画像をMySQLに保存するにはどのようにしたらよろしいでしょうか?
よろしくお願いします。

A 回答 (1件)

addslashesはSQLインジェクションの原因となるので使ってはいけない関数です。

存在を忘れましょう。mysql_real_escape_string を使います。

$data=mysql_real_escape_string($data);
mysql_query("insert into img_table (img_field) values ('$data')");
でどうですか?

この回答への補足

ご回答、ありがとうございます。

> addslashesはSQLインジェクションの原因となるので使ってはいけない関数です。
ですよね。藁をもすがる気持ちで試してみました。

>$data=mysql_real_escape_string($data);
>mysql_query("insert into img_table (img_field) values ('$data')");
>でどうですか?
ありがとうございます。
早速試したのですが、syntax to use near ''の''部分の文章が\付きになったものの同様にアップロードできませんでした。

補足日時:2009/03/20 11:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!