Обновление BLOB-объектов в MySQL с использованием PHP - PullRequest
0 голосов
/ 03 марта 2011

Я не могу понять, что не так с моим SQL. Вот скрипт PHP, который генерирует запрос:

function SaveData($data,$id,$file)
{
    $handle = fopen($file['file']['tmp_name'], 'r');
    $datafile = fread($handle, filesize($file['file']['tmp_name']));
    $datafile = mysql_real_escape_string($datafile);
    fclose($handle);        
    $query= "UPDATE data SET Text='" . $data['Text'] . "', Binary='$datafile', Tag='" . $data['Tag'] . "', name='" . $file['file']['name'] . "',type='" . $file['file']['type'] . "', size='" . $file['file']['size'] . "' WHERE Object_ID=".$id;

    mysql_query($query,$this->connection) or die(mysql_error());
}

Если появляется следующая ошибка:

У вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует ваша версия сервера MySQL для правильный синтаксис для использования рядом 'Binary ='% PDF-1.5 \ r% âãÏÓ \ r \ n37 0 OBJ \ г <</p>

Кто-нибудь может дать мне несколько советов?

Ответы [ 3 ]

1 голос
/ 03 марта 2011

BINARY - это зарезервированное слово в mySQL.

Вам необходимо использовать обратные метки или изменить имя столбца.

`Binary` = '$datafile'
0 голосов
/ 03 марта 2011

В дополнение к синтаксической ошибке, указанной в других ответах, нельзя просто вставить переменную с двоичными данными в SQL-запрос, подобный этому.Сначала вам нужно преобразовать его в шестнадцатеричную строку.

function SaveData($data,$id,$file)
{
    $handle = fopen($file['file']['tmp_name'], 'rb'); // note the b here
    $datafile = fread($handle, filesize($file['file']['tmp_name']));
    $contents = bin2hex(($datafile)); // no need to escape this
    fclose($handle);        
    $query= "UPDATE data SET Text='" . $data['Text'] . "', `Binary`=x'$contents'; 
    // rest of the code trimmed
}

Также обратите внимание, что ваше поле должно быть BLOB для приема двоичных данных.

0 голосов
/ 03 марта 2011

Двоичное слово является зарезервированным словом

Попробуйте заключить в кавычки

`Binary`='$datafile', 

Вот список ключевых слов Mysql Keywords

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...