Показать изображение из базы данных на странице Php

Я пытаюсь сделать онлайн-викторину с вопросами об изображениях, и мне нужна ваша помощь / совет. Мои изображения хранятся в базе данных, где есть идентификатор «изображение». Моя загрузка работает нормально, изображение хранится в базе данных … но я не могу показать изображение в вопросах.

Мне удалось показать значок для изображения и имени, но не изображение. Изображение хранится в базе данных с base64_encode, и вот структура из моей базы данных.

Образ БД

И результат из моего кода здесь: http://imageshack.com/a/img922/6874/U4hkbj.jpg

Я поставил имя там, чтобы проверить мое соединение с базой данных, это не обязательно из окончательного кода.

А вот код для отображения изображений:

 require_once("scripts/connect_db.php");
$res=mysqli_query($connection, "SELECT * FROM questions WHERE id='$question'");

echo "<table>";
while($row=mysqli_fetch_array($res)) {

echo "<tr>";
echo "<td>";?> <img src= data:image/png;base64 ' . $row['image']; .  '  > <?php echo "</td>";
echo "<td>" ; echo $row["name"]; echo" </td>";

echo "</tr>";

}
echo "</table>";

И это мой код из выставочных вопросов с изображением:

   <?php
session_start();
require_once("scripts/connect_db.php");
$arrCount = "";
if(isset($_GET['question'])){
$question = preg_replace('/[^0-9]/', "", $_GET['question']);
$output = "";
$answers = "";
$q = "";
$sql = mysqli_query($connection, "SELECT id FROM questions");
$numQuestions = mysqli_num_rows($sql);
if(!isset($_SESSION['answer_array']) || $_SESSION['answer_array'] < 1){
$currQuestion = "1";
}else{
$arrCount = count($_SESSION['answer_array']);
}
if($arrCount > $numQuestions){
unset($_SESSION['answer_array']);
header("location: index.php");
exit();
}
if($arrCount >= $numQuestions){
echo 'finished|<p>There are no more questions. Please enter your first and last name and click next</p>
<form action="userAnswers.php" method="post">
<input type="hidden" name="complete" value="true">
<input type="text" name="username">
<input type="submit" value="Finish">
</form>';
exit();
}require_once("scripts/connect_db.php");
$res=mysqli_query($connection, "SELECT * FROM questions WHERE id='$question'");

echo "<table>";
while($row=mysqli_fetch_array($res)) {

echo "<tr>";
echo "<td>";?> <img src= data:image/png;base64 ' . $row['image']; .  '  > <?php echo "</td>";
echo "<td>" ; echo $row["name"]; echo" </td>";

echo "</tr>";

}
echo "</table>";$singleSQL = mysqli_query($connection, "SELECT * FROM questions WHERE id='$question' LIMIT 1");
while($row = mysqli_fetch_array($singleSQL)){
$id = $row['id'];
$thisQuestion = $row['question'];
$type = $row['type'];
$question_id = $row['question_id'];
$q = '<h2>'.$thisQuestion.'</h2>';
$sql2 = mysqli_query($connection, "SELECT * FROM answers WHERE question_id='$question' ORDER BY rand()");
while($row2 = mysqli_fetch_array($sql2)){
$answer = $row2['answer'];
$correct = $row2['correct'];
$answers .= '<label style="cursor:pointer;"><input type="radio" name="rads" value="'.$correct.'">'.$answer.'</label>
<input type="hidden" id="qid" value="'.$id.'" name="qid"><br /><br />
';

}
$output = ''.$q.','.$answers.',<span id="btnSpan"><button onclick="post_answer()">Submit</button></span>';
echo $output;
}
}
?>

Я новичок в php, и это мой первый проект, мне очень нужна ваша помощь для решения моей проблемы.

Большое спасибо за помощь и за интерес!

РЕДАКТИРОВАТЬ: Изображения хранятся в базе данных с этим кодом:

if (isset($_FILES['image'])) {
$name = $_FILES['image']['tmp_name'];
$image = base64_encode(
file_get_contents(
$_FILES['image']['tmp_name']
)
);

0

Решение

Вы забыли заключить в кавычки, запятую и не эхо $row['image'], Изменить:

<img src= data:image/png;base64 ' . $row['image']; .  '  >

чтобы:

<img src="data:image/png;base64,<?= $row['image'] ?>"  >

или (в соответствии с вашим глобальным синтаксисом) для:

echo '<img src="data:image/png;base64,' . $row['image'] . '">';

Редактировать:

Я вижу пастбина в вашем последнем комментарии. Прежде всего, я думаю, что это не источник HTML, а источник из инспектора страниц (после рендеринга DOM). Если вы посмотрите на код, то увидите, что <img> тег. Ваш обработанный код:

<div id="answers">/9j/(...)/2Q=="&gt;<h2>
└────────────┘
base64 image

Изображение в кодировке base64 является правильным (как вы можете видеть Вот), но это не правильно <img> тег:

<img src="data:image/png;base64,/9j/(...)/2Q==">
└────────────┘
base64 image

Видя ваш код:

echo "<table>";
while($row=mysqli_fetch_array($res)) {
echo '<img src="data:image/png;base64,' . $row['image'] . '">';
}
echo "</table>";

Даже если <table><img></table> недопустимый HTML, я думаю, что проблема не в вашем HTML, а в вашем javascript, вероятно, внутри getQuestion() функция: проверить это глубоко, чтобы получить исправленный код.

1

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

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

По вопросам рекламы [email protected]