#php #mysql
#php #mysql
Вопрос:
Итак, я внедрял веб-сайт спонсорского администратора, а затем столкнулся с некоторыми проблемами.Я знаю, что сохранение изображения в базе данных может быть такой головной болью, но это необходимо (наличие файловой системы для хранения изображений на сервере кампуса запрещено).
Я создаю 3 таблицы:
- информационная таблица, хранящая текстовую информацию,
- таблица изображений, хранящая изображения в виде больших двоичных объектов и
- таблица id_table в качестве справочной таблицы, хранящей записи идентификатора изображения и info id.
$result=mysql_query("SELECT info_id,info_name,info_year,info_level,info_email,info_describe FROM info");
while($row = mysql_fetch_array($result))
{
echo "<td>" . $row['info_name'] . "</td>";
echo "<td>" . $row['info_year'] . "</td>";
echo "<td>" . $row['info_level' ] . "</td>";
echo "<td>" . $row['info_email'] . "</td>";
echo "<td>" . $row['info_describe'] . "</td>";
$result_image_id = mysql_query("SELECT id_image FROM id_table WHERE id_info = '{$row['info_id']}'");
$row_image = mysql_fetch_array($result_image_id);
$result_image = mysql_query("SELECT image_stuff FROM image WHERE image_id = '{$row_image['id_image']}'");
$row_2 = mysql_fetch_array($result_image);
$content=$row_2['image_stuff'];
echo "<td>" ;
header('Content-type: image/jpeg');
echo $content;
echo "</td>";
echo "</tr>";
}
Затем в браузере я был перенаправлен на пустую страницу. Если я удалю эту функцию заголовка, у меня действительно будет таблица на странице, но в столбце изображения ничего нет.
Есть предложения?
Кроме того, я попытался использовать <img>
тег в моем цикле while:
echo "<img src='$content' />";
Хорошая новость в том, что это вроде бы сработало, но файл изображения практически не отображался.
На моей странице была таблица с графическим столбцом, заполненным файлами изображений, но это выглядело так, как будто сервер не нашел изображение.
Я предполагаю, что с моим скриптом вставки не существует никаких проблем, потому что, когда я применял этот тег img, логотип «не удается отобразить» появлялся только в ячейке, строка которой соответствует той, которую я загрузил файл изображения в базу данных…
Ответ №1:
Вы не можете использовать подобные заголовки…
попробуйте что-то подобное
$result=mysql_query("SELECT info_id,info_name,info_year,info_level,info_email,info_describe FROM info");
while($row = mysql_fetch_array($result))
{
echo "<td>" . $row['info_name'] . "</td>";
echo "<td>" . $row['info_year'] . "</td>";
echo "<td>" . $row['info_level' ] . "</td>";
echo "<td>" . $row['info_email'] . "</td>";
echo "<td>" . $row['info_describe'] . "</td>";
$result_image_id = mysql_query("SELECT id_image FROM id_table WHERE id_info = '{$row['info_id']}'");
$row_image = mysql_fetch_array($result_image_id);
$result_image = mysql_query("SELECT image_stuff FROM image WHERE image_id = '{$row_image['id_image']}'");
$row_2 = mysql_fetch_array($result_image);
$content=$row_2['image_stuff'];
echo "<td>" ;
echo '<img src="data:image/png;base64,' . base64_encode($content) . '" />';
echo "</td>";
echo "</tr>";
}
Измените png для любого типа изображения, которое вы сохранили. Я не особо изучал код, но это должно сработать.
Комментарии:
1. если бы я не кодировал $ content, я бы получил что-то вроде localhost / project_name / Array в качестве URL произвольного изображения. В столбце изображения появился логотип «не может быть отображен». Возможно ли, что в моем скрипте вставки изображения что-то не так?
2.
base64_encode()
это ограничение пропускной способности, когда вы берете двоичное изображение и преобразуете его в символы ASCII! Почему бы не сохранить изображение на диск или, еще лучше, не сохранять двоичное изображение в базе данных? Сохраните путь к двоичному изображению в вашей файловой системе, доступной через Интернет.3. @YzmirRamirez «(наличие файловой системы для хранения изображений на сервере кампуса запрещено)» Цитируется из OP.
4. $sql_2=»ВСТАВИТЬ В изображение (image_id,image_name,image_stuff) ЗНАЧЕНИЯ (NULL, ‘$_FILES[file][name]’, ‘$_FILES[file]’);»; if (!mysql_query($sql_2,$con)) { die(‘Ошибка: ‘ . mysql_error()); }
5. Я опустил другие части, например, оценку того, является ли тип файла допустимым и прочее.
Ответ №2:
echo «» . $row [‘post_image’] . «»
Комментарии:
1. Пожалуйста, объясните, как это может помочь автору вопроса?