Загрузить и сохранить файл изображения в базе данных с описанием, используя PHP и MySQL

Я пытался загрузить изображение в базу данных с описанием изображения, а затем получить данные из базы данных и поместить описание под изображение. Я новичок в php. Я не могу найти информацию в Интернете, которую я загрузил в базу данных и отображаю я просто не могу заставить описание работать спасибо за помощь

index.php

    <form action = "upload.php" method = "post" enctype = "multipart/form-data">
    Select Image File to Upload:
    <input type = "file" name = "file">
    <br><input type = "text" name = "description" placeholder = "description of        your image"> 
    <input type = "submit" name = "submit" value = "Upload">
</form>

загрузить.php

    // Create database connection
    $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);

    // Check connection
    if ($db->connect_error) {
        die("Connection failed: " . $db->connect_error);
    }
    $statusMsg = '';

    // File upload path
    $targetDir = "upload/";
    $fileName = basename($_FILES["file"]["name"]);
    $targetFilePath = $targetDir . $fileName;
    $fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);

    if (isset($_POST["submit"]) && !empty($_FILES["file"]["name"])){
        // Allow certain file formats
        $allowTypes = array('jpg','png','jpeg','gif','pdf');
        if (in_array($fileType, $allowTypes)){
            // Upload file to server
            if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
                // Insert image file name into database
                $insert = $db->query("INSERT into images (file_name, uploaded_on) VALUES ('".$fileName."', NOW())");
                if ($insert){
                    $statusMsg = "The file ".$fileName. " has been uploaded successfully.";
                }else{
                    $statusMsg = "File upload failed, please try again.";
                }
            }else{
                $statusMsg = "Sorry, there was an error uploading your file.";
            }
        }else{
            $statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';
        }
    }else{
        $statusMsg = 'Please select a file to upload.';
    }

    // Display status message
    echo $statusMsg;
    ?>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
235
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш код не сохраняет description в базу данных. Вот почему вы не можете показать это.

Сначала вам нужно добавить новый столбец description внутрь таблицы images.

После этого вы должны получить описание, отправленное в запросе, как вы это сделали с $fileName

$description = $_POST['description'];

Теперь вы можете вставить в images:

$insert = $db->query("INSERT INTO images (file_name, description, uploaded_on) VALUES ('".$fileName."', '".$description."', NOW())");

$_GET должно быть $_POST, я бы отредактировал его, но проблема с SQL-инъекцией требует решения и, возможно, переписана, чтобы ОП делал это правильно, иначе следующим вопросом будет, почему я не могу добавить описание In this image, I'm watching football
Lawrence Cherone 06.07.2019 19:52

Спасибо, что нашли мою ошибку, @LawrenceCherone. Я тоже считаю, что его код можно улучшить во многих отношениях: стиль, безопасность и т. д. Я не рассматривал дополнительные вопросы в своем ответе, чтобы избежать длинного и развернутого ответа, на который у меня нет времени писать прямо сейчас. Кроме того, я считаю, что предоставление большого количества информации тому, кто, как и он, борется с базовой проблемой, принесет больше путаницы, чем пользы.

Caconde 06.07.2019 20:10

спасибо за помощь, я попробовал, и вот что я получил Неустранимая ошибка: невозможно использовать [] для чтения в E:\XAMPP\htdocs\upload.php в строке 15.

Santo Lewis 06.07.2019 22:17

@Caconde извините, я поставил дополнительную скобку swrl, извините, я немного запутался с $description = $_POST['описание'];, потому что, где бы я ни вставлял, появляется Примечание: Неопределенный индекс: описание в E:\XAMPP\htdocs\upload.php в строке 12., спасибо за помощь

Santo Lewis 06.07.2019 22:34

Странный. Проверьте свою форму внутри index.php, пожалуйста. Поле должно иметь свойство name = "description"

Caconde 06.07.2019 22:53

@Caconde, спасибо, я, должно быть, запутался в написании, теперь оно работает, спасибо

Santo Lewis 06.07.2019 23:55

Другие вопросы по теме