Я пытаюсь загрузить файл изображения в мою базу данных с PHP и MySQLi, но я сталкиваюсь с очень запутанной ошибкой. Таблица имеет два столбца, «заголовок» и «изображение». «Title» – это имя файла и «изображение» для данных изображения. обе таблицы НЕ допускаются к принятию NULL. Когда я загружаю файл, данные хранятся в столбцах таблицы. «title» содержит правильные значения, но столбец «image» содержит « <binary data>
».
Поскольку столбец таблицы не принимает значения NULL, я предположил, что это данные файла, но когда я пытаюсь получить и отобразить данные изображения в showimage.php, он сообщает мне, что данные изображения NULL.
Я использую тип данных BLOB для хранения данных изображения в таблице. Насколько мне известно, основываясь на онлайн-ресурсах и примерах, он должен работать. Благодарю.
Код:
PHP:
uploads.php
if (isset($_POST['submit'])) { $title = $_FILES['image']['name']; $data = $_FILES['image']['tmp_name']; $content = file_get_contents($data); $query = "INSERT INTO images (title, image) VALUES (?, ?)"; $statement = $databaseConnection->prepare($query); $statement->bind_param('sb', $title, $content); $statement->execute(); $statement->store_result(); $creationWasSuccessful = $statement->affected_rows == 1 ? true : false; if ($creationWasSuccessful) { echo "Works!"; } else { echo 'failed'; } }
showimage.php
if (isset($_GET['id'])) { $id = $_GET['id']; $query = "SELECT * FROM images WHERE id = ?"; $statement = $databaseConnection->prepare($query); $statement->bind_param('i', $id); $statement->execute(); $statement->store_result(); if ($statement->num_rows >= 1) { $statement->bind_result($imageid, $title, $image) while ($statement->fetch()) { if ($image == NULL) { echo "Image data does not exist!"; } else { header("Content-Type: image/jpeg"); echo $image; } } } }
HTML
<form action="uploads.php" method="post" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit" name="submit"> </form>