2012-04-18 4 views
0

У меня возникла проблема при попытке обновить два BLOB-поля в строке с помощью команд mysql и php.mysql update 2 blobs сразу не работает

Вставка BLOB в строку, похоже, не сработает, вот что я делаю.

$logotemp = $_FILES['eventlogo']['tmp_name']; 
$thumbnailtemp = $_FILES['eventthumbnail']['tmp_name']; 
$openlogo  = fopen($logotemp, 'r'); 
$openthumbnail  = fopen($thumbnailtemp, 'r'); 
$logo = fread($openlogo, filesize($logotemp)); 
$logo = addslashes($logo); 
$thumbnail = fread($openthumbnail, filesize($thumbnailtemp)); 
$thumbnail = addslashes($thumbnail); 
fclose($openlogo); 
fclose($openthumbnail); 

Поэтому у меня есть два входа файла форма, и эти файлы читаются, а затем установить в качестве переменных $ журнала и $ миниатюр. Затем я использую следующую команду, чтобы ввести это в БД:

$qry = "INSERT INTO $table (`Event Logo`, `Venue Logo`) VALUES ('$logo', '$thumbnail')"; 
$result = mysql_query($qry); 
if(!$result) { 
die(mysql_error()); 
} 

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

Затем я хочу отредактировать строку, поэтому создал новый php-файл с именем edit.php, который является копией файла php, используемого выше, называемого new.php.

Это означает, что форма идентична, и когда страница отображается, значение для каждого входа заполняется информацией из базы данных, логотип и миниатюра отображаются рядом с полями загрузки.

Если я запустил запрос для обновления строки, используя почти тот же код, что и выше, он всегда вводит пустое значение в оба блока, по существу удаляя загруженные изображения. Вот что происходит:

$id = $_POST['eventid'];   
    $logotemp = $_FILES['eventlogo']['tmp_name']; 
    $openlogo  = fopen($logotemp, 'r'); 
    $logo = fread($openlogo, filesize($logotemp)); 
    $thumbnailtemp = $_FILES['eventthumbnail']['tmp_name']; 
    $openthumbnail  = fopen($thumbnailtemp, 'r'); 
    $thumbnail = fread($openthumbnail, filesize($thumbnailtemp)); 
    fclose($openlogo); 
    fclose($openthumbnail); 

Итак, еще раз, форма поля до сих пор называют eventlogo и eventthumbnail, а переменные еще $ логотип и $ миниатюру. Затем я использую следующий запрос для обновления строки:

$qry = "UPDATE $table SET `Event Name` = '$name', `Date` = '$date', `Time` = '$time', `Venue` = '$venue', `Price` = '$price', `Open To` = '$opento', `Rep Name` = '$repname', `Rep Email` = '$repemail', `Address` = '$address', `Website` = '$website', `Phone` = '$phone', `Description` = '$description', `Event Logo` = '$logo', `Venue Logo` = '$thumbnail' WHERE `Event ID` = '$id'"; 

Я оставил в других переменных, которые обновляются на этот раз.

$result = mysql_query($qry); 
if(!$result) { 
die(mysql_error()); 
} 

Когда запрос выполняется, он обновит любые другие поля, которые я хочу, за исключением двух полей BLOB изображения в конце. Учитывая, что я скопировал и вставил код для полей для загрузки, код для чтения содержимого этого поля, а затем вручную напечатал запрос для обновления этих полей, я не вижу, что происходит не так.

Я пропустил что-то очевидное? Любая помощь приветствуется.

Спасибо, Eds

+0

1-й. Используйте параметризованный SQL, как есть, это вызывает проблемы. Во-вторых, в редакторе edit.php вы, по крайней мере, пропускаете вызов «addlashes» над логотипом. Двоичные данные будут содержать символы, которые испортили ваш SQL-запрос, но mysql (и другие серверы sql) будут молча принимать их. –

+0

Извините, мой код не включает addlashes, но не включил их здесь по какой-то причине. Должно быть, что-то не так в открытии файла и читая его как двоичное, и просто подходим пустым – Eds

ответ

0

Cant найти код, который я отсортированный это с, но я думаю, что в конечном итоге просто обновить один за один раз.

Смежные вопросы