Сначала вы храните неверную информацию в базе данных, вы сохраняете размер файла, а не закодированное изображение.
$file_temp = base64_encode( file_get_contents( $_FILES['image']['tmp_name'] ) );
$image_size = getimagesize($file_temp);
$query = "INSERT INTO questions(question_name, image, answer, category_id,level_id)
VALUES('$question', '$file_temp','$answer', '$category_id', '$level_id')";
$result = mysqli_query($conn, $query);
header("Location: display_question.php");
Во-вторых, если вы сохранили версию файла в кодировке base64 в базе данных, вам не нужно снова ее кодировать, когда вы извлекаете ее из базы данных, поэтому ваш тег <img>
должен иметь значение
<?php echo "<img src='data:image/png;base64,$row[image]'/>"?>
</br><br/></td>
И в-третьих и, самое главное, вам необходимо использовать параметризованные запросы для защиты вашего приложения от Атака SQL Injection
$file_temp = base64_encode( file_get_contents( $_FILES['image']['tmp_name'] ) );
$image_size = getimagesize($file_temp);
$query = "INSERT INTO questions
(question_name, image, answer, category_id,level_id)
VALUES(?,?,?,?,?)";
$stmt = $conn->prepare($query);
$stmt->bind_params('sssss', $question,
$file_temp,
$answer,
$category_id,
$level_id);
$result = $stmt->execute();
if (!$result) {
echo $conn->error;
}
header("Location: display_question.php");