Бинарные файлы в MySQL

Gudi

Новичок
Бинарные файлы в MySQL

Добрый день!
Задача - запись и выгрузка бинарного файла на MySQL при помощи PHP.
Записываю файл вот так:
PHP:
$myFileName=$_FILES['myfile']['name'];  
$f=fopen($myfile,"rb");
$upload=fread($f,filesize($myfile));
fclose($f);
$upload=mysql_escape_string($upload); 
$dbName = "firms";  $dbTable = "contract"; 
$conn = @mysql_connect("localhost", "******", "******") or die ("Невозможно подключиться к MySQL");
$selectDB = @mysql_select_db($dbName, $conn) or die ("Невозможно выбрать базу данных.");
$query = "INSERT INTO $dbTable  (IDFirm, textDogovor, nameDogovor, opisDogovor)  VALUES  (\"$firm\", \"$upload\", \"$myFileName\", \"$opisDogovor\")";  
$result = mysql_query($query, $conn) or die ("Невозможно выполнить запрос!".mysql_error());  mysql_close($conn)
Выгружаю файл вот так:
PHP:
$dbName = "firms";  $dbTable = "contract"; 
$conn = @mysql_connect("localhost", "******", "******") or die ("Невозможно подключиться к MySQL");
$selectDB = @mysql_select_db($dbName, $conn) or die ("Невозможно выбрать базу данных.");   
$sql1 = "SELECT contract.nameDogovor, contract.textDogovor FROM firms.contract where contract.IDDogovor=$IDDogovor";  
$nameDogovor = mysql_query($sql1, $conn) or die ("Невозможно выполнить запрос 1!".mysql_error());
$row = mysql_fetch_row($nameDogovor);   
$fd = fopen("D:/WWW/home/localhost/WWW/TEMP/$row[0]","w");  
if(!$fd) exit("Ошибка открытия файла");  
fwrite($fd,$row[1]);  
fclose($fd);
Файл выгружается, но размер разный. Я думаю что проблема в функции mysql_real_escape_string, которая экранирует специальные символы чтобы можно было данные добавить в базу! Проблема в том что не получается "разэкранировать" данные обратно. Соответственно файлы выгружаются "битыми".
Как мне решить эту проблему?
ЗЫ. Мне не надо хранить файлы в директориях, а в базе держать на них ссылки. Мне нужно именно реализовать хранение бинарных файлов в MySQL.
Зарание спасибо!
 

zerkms

TDD infected
Команда форума
их не нужно разэкранировать
экранирование никоим образом не модифицирует данные, которые оказываются в БД
phpfaq.ru/slashes
 

Gudi

Новичок
zerkmsТак почему у меня тогда файлы разными получаются? Что я делаю не правильно?
 

zerkms

TDD infected
Команда форума
почитай ссылку
есть подозрение, что у тебя просто экранирование происходит дважды
и phpfaq.ru/debug - тоже, обязательно к прочтению

ps: если хочешь решить проблему - отбрось сразу излишний пафос и прочитай таки обе ссылки, а то получится как всегда...
 

Gudi

Новичок
zerkms
Спасибо, буду пробывать.

-~{}~ 28.11.08 10:16:

zerkms
Спасибо, проблема была действительно в двойном экранировании. Вопрос решен.
 
Сверху