2016-05-10 5 views
-1

Я использую фантом для захвата изображений, а затем загружаю их в централизованную базу данных MySQL.PDO Blob Insert Missing Data

Проблема, с которой я сталкиваюсь, заключается в том, что она последовательно разрезает конец каждого файла, который я пытаюсь нажать. Неважно, если это .pdf, .png, .docx, .xlsx ... он отсекает часть файла, тем самым разлагая его. Странно то, что он всегда сокращает одну и ту же сумму от каждого файла.

My SQL вставить код:

$put_linkdata = $DBW->prepare('INSERT `'.$tableD.'` SET 
        captured = :capture_time, 
        error = :eYN, 
        link = :link, 
        image = :image, 
        html = :html, 
        `text` = :plaintext, 
        file = :file, 
        mimetype = :mimetype'); 

       $put_linkdata->bindValue(':capture_time', date('Y-m-d H:i:s',$record['timestamp'])); 
       $put_linkdata->bindValue(':link', $item['url']); 
       $put_linkdata->bindValue(':mimetype', $record['mimetype']); 
       $put_linkdata->bindParam(':eYN', $record['error'], PDO::PARAM_STR); 
       $put_linkdata->bindParam(':image', $record_child['image'], PDO::PARAM_LOB); 
       $put_linkdata->bindParam(':plaintext', $record_child['text'], PDO::PARAM_LOB); 
       $put_linkdata->bindParam(':html', $record_child['html'], PDO::PARAM_LOB); 
       $put_linkdata->bindParam(':file', $record_child['file'], PDO::PARAM_LOB); 

       if($put_linkdata->execute()){ 
        $linkData_record['id'] = $DBW->lastInsertId(); 
        print PHP_EOL.mb_strlen($record_child['image'], '8bit'); 
        print PHP_EOL.PHP_EOL.'~~~~~~~~~~~~~~~~~~~~~~~~~~~'.PHP_EOL.PHP_EOL; 
        die(); 
       } 
       else{ 
        throw New Exception('Error inserting linkdata record into archive - SQL error "'.$put_linkdata->queryString.'"'.PHP_EOL.PHP_EOL.$put_linkdata->errorInfo()); 
       } 

Я бежал тонну испытаний и все перед, чтобы здесь данные по-прежнему сохраняет целостность, и если я file_put_contents() это совпадает с захваченного изображения или файла ,

Пример изображений, потянув google.com, дает мне изображение 25K, но загрузка составляет 17,2K. PDF, который составляет 55K, загружается на 40,7K. Другой pdf-файл составляет 1,5 МБ, но загружает его в 1,1 МБ. Когда я разбираю файл с блоком db, в блоке DB отсутствует содержимое в нижней части файла.

Размер и содержание не согласованы между файлами, но IS согласованы для идентичных захватов.

У кого-нибудь есть идеи?

Обновление Я сузил его до чего-то, что произошло между подготовленным заявлением и загрузкой.

Также это происходит как в PDO, так и в MySQLI при использовании подготовленного оператора. Первое предположение заключалось в том, что кодировка кодировки где-то некорректна, однако все определяется как UTF8 (db, table, PDO connection, config files).

+0

Я предполагаю, что BLOB недостаточно велик для хранения данных. Попробуйте либо MEDIUMBLOB, либо LONGBLOB. Я уже ответил на подобный вопрос, прежде всего, будучи именно этим; слишком маленький тип столбца. –

+0

На самом деле это столбец LONGBLOB, но я попытался изменить его на MEDIUM и BLOB, чтобы узнать, связано ли это с PDO и размером блоба. Ни одна из этих изменений не работала, и даже если это был BLOB, 25K все еще находится в этом диапазоне. – Lilbnyfufu

+0

Является ли время ожидания скрипта перед его завершением загрузки капли? – Mazodude

ответ

0

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

Там есть ошибка со старыми версиями PHPMyAdmin, где это не правильно показывать или скачать данные в столбцах blob.

+0

Поблагодарите lilbnyfufu за свой ответ. Раньше я сталкивался с подобной проблемой. С тех пор я прекратил использовать Blob. Вместо этого я загружаю файлы в папку и просто сохраняю имя файла или URL-адрес в моей базе данных. Таким образом, я знаю, что база данных также возвращает значения быстрее. – CyberFla