MySQL правильный способ хранения BLOB (не сохраняя его на локальном диске)

Если я использовал завивать чтобы загрузить изображение и хотите сохранить изображение в MySQL поле типа большой двоичный объект как я могу это сделать?
Обычно я бы использовал LOAD_FILE () Функция mysql для локального файла, однако в этом конкретном вопросе я не хочу специально сохранять файл на диске.

необработанные данные изображения из CURL находятся в переменной $ изображения я могу отобразить это как

echo "<img src='data:image/jpeg;base64," . base64_encode($image) . "' />";

Теперь, когда я добавляю его в базу данных, я получаю ошибку в запросах с использованием драйвера MySQL

$query = "INSERT into images ( image_blob ) VALUES ( '{$image}' )";

(обратите внимание, что я специально не использую драйвер PDO или MySQLi для этого примера)

Что мне делать в этом случае, я не смог найти ответ, поэтому я попытался с одной из следующих функций

addslashes($image)
mysql_real_escape_string($image)
bin2hex($image)
base64_encode($image)

каждый из них может решить проблему и сохранить изображение, однако какой из них является правильным в этом случае?

Постскриптум Несмотря на то, что каждая функция создает строку разной длины, я заметил, что размер файла, сообщаемый в phpMyAdmin каждый раз, один и тот же, почему это так?

0

Решение

Для (mysql) запросов к базе данных используйте mysql_real_escape_string ().

Они имеют одинаковый размер, поскольку для типа данных BLOB-объектов MySQL хранит фактическое содержимое BLOB-объектов внешне, а не в таблице.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector