プロが教える店舗&オフィスのセキュリティ対策術

PHPとMySQLを使い、画像データベースを構築しています。
以下までできたのですが、SQL syntaxエラーが発生してしまい、UP出来ませんでした。
画像を指定しない場合は、成功します。
<form method="post" action="addinfo.php" enctype="multipart/form-data">
Place Name(*)<br>
<input type="text" size="50" maxlength="100" name="place_name"><br>
Address(*)<br>
<input type="text" size="50" maxlength="100" name="address"><br>
Pictures<br>
<input type="file" size="50" name="picture1"><br>
<input type="file" size="50" name="picture2"><br>
<input type="file" size="50" name="picture3"><br>
<input type="reset" value="Reset" name ="reset">
<input type="submit" value="Submit" name="submit">
</form>

<?php
if ($_POST["submit"] != "") {
// Connecting DB
require 'lib.php';

//img1
if ($_FILES["picture1"]["tmp_name"] != NULL) {
$fp = fopen($_FILES["picture1"]["tmp_name"], "rb");
if (!$fp) {
print("Cannot open the uploaded file <BR>\n");
exit;
}
$img1 = fread($fp, filesize($_FILES["picture1"]["tmp_name"]));
fclose($fp);
}
-----------------------------------------------------------
img2, img3についての処理もimg1と同じなので、文字数の関係で省略します
-----------------------------------------------------------

// Insert Query
$sql = "INSERT INTO places
(place_name, address, `picture1`, `picture2`, `picture3`)
VALUES('{$_POST["place_name"]}','{$_POST["address"]}',
'{$img1}', '{$img2}', '{$img3}')
";

$result = mysql_query($sql);
if (!$result) {
print("QUERRY ERROR<BR>\n");
print(mysql_errno() . ": " . mysql_error() . "<BR>\n");
exit;
}

echo "UPLOAD SUCCESSFULL ";

ご教授お願いいたします

A 回答 (2件)

picture1, picture2, picture3


は、画像ということなので、バイナリデータであると推察します。

バイナリデータのデータベースへの登録は、1つのINSERT文だけでは出来ません。
SQL文というのは、文字列だけで記述する必要があります。

おそらく、テーブルにBLOBのカラムを設けて、そこへ登録を行うことになります。

やり方は、参考URLなどを参照してください。「php blob」で検索して、最初に表示されたページです。

参考URL:http://www.doyouphp.jp/sample/sample_ora_blob.sh …
    • good
    • 0

いあ、それ以前に、外部から来たものを SQL に直に突っ込むなよ。


構文エラーの原因はそれだけ。
バイナリだろうが、文字列だろうが本質に変わりはない、扱う側の問題だ。

余談。
サイズが多分でかいから、アップが成功するとは限らない、とか、アップしてくるのは、良心的なやつらばかりじゃないとか色々。
    • good
    • 0

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