2014-10-10 5 views
0

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

База данных состоит из текстовых столбцов и столбца 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']); 
} 

Результат по Сафари

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

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

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

Редактировать Так за другой взгляд на код (работает далеко-далеко на жесткий сегодня) я заметил, что я посылаю массив по эхо json_encode ($ сообщений);

json_encode испортил данные о блобе.

Благодаря

+7

В каждом примере кода в вашем вопросе есть ошибка. –

ответ

1

Создание изображения из 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; 

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

Смежные вопросы