Я разрабатываю скрипт 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-объектов.
Спасибо
Создайте изображение из 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;
Это должно работать для вас.
Других решений пока нет …