PHPデータをMYSQLに格納
こちらのmysqlのフィールドが
1. CREATE TABLE `temp_upload` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(255) NOT NULL default '',`mime` varchar(255) NOT NULL default '',`image` longblob NOT NULL,
`created` timestamp(14) NOT NULL, PRIMARY KEY (`id`))
の場合では下記のコードを入力してBLOBに画像の格納が出来ました。
# // 追加SQL作成
# $sql = sprintf( 'INSERT INTO temp_upload ( name, mime, image ) VALUES ( "%s", "%s", "%s" )',
# mysql_real_escape_string( $_FILES['image']['name'] ),
# mysql_real_escape_string( $_FILES['image']['type'] ),
# mysql_real_escape_string( $image ) );
#
#
# $result = mysql_query( $sql );
#
# header( sprintf( 'Location: %s', $_SERVER['SCRIPT_NAME'] ) );
# exit;
#
# }
ただしもmysqlのフィールド数がもっとある場合はどのように記述をすればいいのでしょうか。
色々と調べ、なんども変更を加えて試してもみたのですがどうしてもmysqlにデータ・画像が格納されません。
こちらがその全然動かないコードになります。
$sql = sprintf( 'INSERT INTO temp_upload (sname, str_check1, sonohoka, train, ken, add1, stime, holiday, denwa, menu1, menu2,url, picname, mime, image ) VALUES ("$sname","$str_check1", "$sonohoka", "$train", "$ken", "$add1", "$stime", "$holiday", "$denwa", "$menu1", "$menu2","$url", "%s", "%s", "%s" )',
mysql_real_escape_string( $_FILES['image']['picname'] ),
mysql_real_escape_string( $_FILES['image']['type'] ),
mysql_real_escape_string( $image ) );
$result = mysql_query( $sql );
header( sprintf( 'Location: %s', $_SERVER['SCRIPT_NAME'] ) );
exit;
}
大変申し訳ないのですが、どなたかお分かりになるかたご教授お願い出来ませんでしょうか?
補足
早速のご回答ありがとうございます。 INSERT INTO hoge VALUES ('バイナリデータ') この場合、バイナリデータを指定するためには (1)バイナリデータを直接書き込むか、 INSERT INTO hoge VALUES ('m.s/zpeor'); //バイナリデータを直接記述 (2)Cプログラム上であれば、配列にコピーして、配列を指定する char buf[] = "ファイルからバイナリデータを読み込み" mysql_real_query(&mysql, INSERT INTO hoge VALUES (buf);); の2通りの方法を考えました。 しかし、 (1)は非常に手間がかかりますし、 (2)は大きなバイナリデータを扱う場合、メモリオーバーフローが起こる可能性があると思います。 INSERT INTO hoge VALUES ('test.aviの中身') のように、SQL文の中にファイルの中身を取り込む方法はないでしょうか?