-3

私は現在、自分のマーケットプレイスにオークションを投稿しているPHPスクリプトを作成しています。私はAjaxを使用して、タイトル、説明、価格、タグ、SupportedOSesなどの$_POST変数を投稿しています。'temp_images'と呼ばれる外部テーブルのblobとしての画像。

オークションを作成する方法は、「MarketDatas」に新しいオークションを挿入することです。これは、ほとんどの場合、非常に簡単です。でも; BLOBを挿入しようとすると、エラーがスローされます。

SQL構文にエラーがあります。2行目の「?+ Qi}」「?m?Am ............」の近くの正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

オークションを作成するためのPHPスクリプトは次のようになります。

/*
    .... connect to database, etc!! I will spare you this and skip to the important part:
*/

// Get the posted variables
$title = $_POST["title"];
$descr = $_POST["description"];
$price = $_POST["price"];
$tagsx = $_POST["tags"];
$supOS = $_POST["SupportedOS"];

// Get our session variables
$Authenticated = ($_SESSION["LoggedIn"] == "1" ? true : false);
$User = $_SESSION["User"];
$Username = $_SESSION["username"];

// If we are authenticated, continue!
if ($Authenticated) {
    // Get our temporary image
    $ImgResult = mysql_query("SELECT * FROM temp_images WHERE User='$Username'");
    if (mysql_num_rows($ImgResult) < 1) { die("NoImage"); }

    // Get image blob
    $image = mysql_result($ImgResult, 0, 'Image');

    // Delete image
    if (!mysql_query("DELETE FROM temp_images WHERE User='$Username'")) { die("Error deleting temp image from DB"); }

    // Post auction on market
    if (!mysql_query("INSERT INTO MarketDatas (Description, Price, Tags, Title, SupportedOS, image)
    VALUES ('$descr', '$price', '$tagsx', '$title', '$supOS', '$image')")) { echo "Error posting auction [48]: syntax[" . mysql_error() . "]"; }

}

ご覧のとおり、BLOBを文字列値として格納しようとしています。しかし、それは私にエラーを投げます。

どうすればこれを解決できますか?

4

1 に答える 1

2

変更POST

$title = mysql_real_escape_string($_POST["title"]);
$descr = mysql_real_escape_string($_POST["description"]);
$price = mysql_real_escape_string($_POST["price"]);
$tagsx = mysql_real_escape_string($_POST["tags"]);
$supOS = mysql_real_escape_string($_POST["SupportedOS"]);

ANDクエリ:

mysql_query("INSERT INTO MarketDatas (Description, Price, Tags, Title, SupportedOS, image)
VALUES ('".$descr."', '".$price."', '".$tagsx."', '".$title."', '".$supOS."', '".mysql_real_escape_string($image)."')")

ほとんどの場合、バイナリデータには'INSERTが含まれ、壊れています。

version for the right syntax near '?+Qi}'?m?Am............'
________________________________________^
于 2012-09-23T18:08:10.407 に答える