Проблема с файлом содержимого PHP MYSQL

Я пытаюсь загрузить файл .pdf в базу данных mysql, используя php.

Это все хорошо, за исключением содержимого файла. Независимо от того, как я пытаюсь убежать от специальных символов, запрос всегда терпит неудачу, главным образом с помощью «Неизвестной команды \ n».

Я использовал addlashes, mysql_real_escape_string, удаляет и т.д.

Кто-нибудь есть идеи о том, как избежать содержимого файла?

Большое спасибо,

Раньше я использовал следующую последовательность, которая, кажется, работает хорошо и будет хранить любые данные в db, включая изображения, pdf-файлы, массивы данных и т. Д. … 🙂

Хранение данных (может быть строкой, массивом, объектом и т. Д.);

Во-первых, превратите данные в строку с кодировкой base64

$strData = strtr( base64_encode( addslashes( gzcompress( serialize($dataToStore) , 9) ) ) , '+/=', '-_,'); 

Затем сохраните эти строковые данные в db …


Получение данных;

Извлечь строковые данные из db

(вам может потребоваться выполнить дополнительный шаг после этого в зависимости от входных данных, массива, изображения и т. д.),

 $returnData = unserialize( gzuncompress( stripslashes( base64_decode( strtr($strDataFromDb, '-_,', '+/=') ) ) ) ); 

Это, безусловно, помогло мне сохранить то, что мне нужно было хранить в mySQL db!

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

Угадайте: вы можете столкнуться с ошибками из-за несовместимости между наборами символов. PDF, вероятно, является двоичным файлом, поэтому вам нужно убедиться, что столбец db настроен таким образом.

Помимо проблемы экранирования вы можете столкнуться с «слишком большими» ошибками пакета, если системная переменная (MySQL) max_allowed_packet установлена ​​на «маленькое» значение.
Используя расширение mysqli, подготовленные операторы и mysqli_stmt :: send_long_data, вы можете избежать обеих проблем.