Я загрузил изображение и текст непосредственно в таблицу через phpMyAdmin. Однако, когда дело доходит до отображения, изображения отображаются в виде нежелательного текста. В чем может быть проблема? Изображение является относительно небольшим файлом jpg. Вот код:
<?php require_once 'login.php'; $conn = new mysqli($hn, $un, $pw, $db); if($conn->connect_error) die($conn->connect_error); $query = "SELECT * from classics"; $result = $conn->query($query); if(!$result) die($conn->error); $rows = $result->num_rows; for($j=0; $j < $rows; $j++) { $result->data_seek($j); $row=$result->fetch_array(MYSQLI_ASSOC); echo 'Cover:' .$row['sleeve'] .'<br>'; } $result->close(); $conn->close(); ?>
Что-то вроде этого, так как ваш echo-оператор должен «работать» с вашей текущей реализацией.
//echo 'Cover:' .$row['sleeve'] .'<br>'; echo '<img src="data:image/jpeg;base64,'.base64_encode( $row['sleeve'] ).'"/>';
Однако @Noor является правильным, хранение изображений, подобных этому, не очень эффективно.
Вы делаете это неправильно. Не сохраняйте изображения в базе данных, так как это не очень хорошая практика. Просто сохраните загруженное изображение в каталоге и сохраните путь к этому изображению в базе данных. Это сэкономит вам пространство базы данных и время поиска.
Вот пример кода
<?php $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); // Check if image file is a actual image or fake image if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } ?>
См. http://www.w3schools.com/php/php_file_upload.asp для получения справки.