MySQL — PHP, как поместить BLOB-данные в массив

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

База данных состоит из текстовых столбцов и столбца BLOB-объектов.

Теперь я пришел, чтобы прочитать эти данные. Я использовал следующий код.

$query = @"SELECT TEXT1, TEXT2, TEXT3, IMAGE FROM EXAMPLETABLE";

Сделать все вызовы sql

Теперь, если я выполню следующую команду, тогда массив заполняется текстом, но в бите изображения / блоба будет пусто

while($row = mysql_fetch_array($result))
{
$posts[] = array($row['TEXT1'], $row['TEXT2'], $row['TEXT3'], $row['IMAGE']);
}

Результат через Safari

[["Gbv","TR","FG",null]]

если я делаю следующее, я получаю данные изображения.

while($row = mysql_fetch_array($result))
{
ECHO $row['IMAGE'];
}

редактировать
Так что после очередного взгляда на код (работавший сегодня очень далеко) я заметил, что отправляю массив
echo json_encode ($ posts);

json_encode портит данные BLOB-объектов.

Спасибо

0

Решение

Создайте изображение из BLOB-объекта, запишите содержимое буфера вывода, преобразуйте его в формат JPEG, извлеките содержимое из буфера, завершите буферизацию вывода, вставьте изображение в массив.

$image = imagecreatefromstring($row['IMAGE']);
ob_start(); //start capture of the output buffer
imagejpeg($image, null, 80);
$data = ob_get_contents();
ob_end_clean();
$posts[] = array('text'1 => $row['TEXT1'], 'text2' => $row['TEXT2'], 'text3' => $row['TEXT3'], 'image' => $data);

Затем сделайте что-то вроде:

foreach($posts as $post):
echo '<img src="data:image/jpg;base64,' .  base64_encode($post['image'])  . '" />';
endforeach;

Это должно работать для вас.

1

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

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

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