Не работает вставка названия изображения в базу данных?

Хорошо, поэтому я придумал способ загружать изображения на свой веб-сайт форума, проверив базу данных, а также вставив заголовок изображения в базу данных. Когда я показываю изображение, оно проверяет, верна ли проверка, и, если это так, повторяет тег html с именем изображения. Моя проблема связана с загрузкой названия изображения в базу данных. Он не вставляется в базу данных. Не могли бы вы помочь?

<?php
session_start();

include_once 'dbh.php';


$forum = $_SESSION['forum'];
$name = $_SESSION['username'];
$check = "true";

if (isset($_POST['submit'])){
$file = $_FILES['file'];

$fileName = $_FILES['file']['name'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$fileError = $_FILES['file']['error'];
$fileType = $_FILES['file']['type'];

$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));

$allowed = array('jpg', 'jpeg', 'png', 'pdf', 'gif', 'bmp', 'mp4', 'avi',);

if (in_array($fileActualExt, $allowed)) {
    if ($fileError === 0) {
    if ($fileSize < 1000000000) {
        $fileNameNew = uniqid('', true) . "." . $fileActualExt;
        $fileDestination = "uploads/" . $fileNameNew;
        move_uploaded_file($fileTmpName, $fileDestination);

        $sql = "INSERT INTO $forum (name, post, image) VALUES ('$name', '$fileName', '$check');";
        $result = mysqli_query($conn, $sql);

        header("Location: display.php?success");
    } else {
        echo "your file is too big";
    }
    } else {
    echo "there was an error";
    }
} else {
    echo "you cannot upload this type of file!";
}

}

Проверьте, что такое $result, прежде чем говорить success. Проверить на наличие ошибок. php.net/manual/en/mysqli.error.php Вы также открыты для инъекций SQL, параметризуйте.

user3783243 07.06.2018 03:43

@ user3783243, как мне это сделать. Я попытался повторить переменную после того, как должна была произойти вставка, но у меня буквально нет вывода. Что теперь?

Alexander Rayner 07.06.2018 03:48

Вы не можете повторить логическое значение, попробуйте var_dump($result); и используйте функцию сообщения об ошибках, которую я связал

user3783243 07.06.2018 03:50

@ user3783243 Я не знаю, что ищу. Я действительно не очень хорошо владею синтаксисом PHP. В ссылке нет ничего, что я понимаю

Alexander Rayner 07.06.2018 03:54

Вам нужно научиться читать эти ссылки. Это руководство, в котором рассказывается все, что вам нужно знать. Поместите mysqli_query в условное и добавьте внутрь printf("Errormessage: %s\n", mysqli_error($conn));. Посмотрите Procedural style из примера 1 по ссылке.

user3783243 07.06.2018 03:56

@ user3783243 Я даже не знаю, что это значит. Я запутался больше. Я использовал один и тот же сценарий бесчисленное количество раз без каких-либо ошибок, и если бы я знал, как читать эти руководства, я бы уже это сделал, но я новичок и понятия не имею, что делаю. Очевидно, что вы знаете, что делать лучше, чем я, поэтому, если бы вы могли указать мне где-нибудь, где я мог бы обработать это в размерах укуса, я был бы признателен за это

Alexander Rayner 07.06.2018 04:04

Я ничего подобного не знаю, это руководство - это то, чему я научился и что использую. Взгляните на pastebin.com/k8ypyv7P. Также, почему имя таблицы хранится в сеансе, это кажется плохой идеей. В руководстве есть 4 раздела Description, в которых рассказывается, что делает функция. Parameters, который он принимает / ожидает. Return Values, который функция возвращает. И затем Examples, который показывает точное использование.

user3783243 07.06.2018 04:11
Стоит ли изучать 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 и хотите разрабатывать...
0
7
44
1

Ответы 1

Сначала измените $ fileName на $ fileNameNew в строке $ sql

затем также измените строку запроса на это:

$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));

теперь ответ на почтовый запрос должен содержать ошибку.

Это приведет к связыванию неправильного файла, а не к невыполнению запроса.

user3783243 07.06.2018 03:55

Это все еще не работает. Проблема в том, что SQL не вставляет имя в базу данных. Каждый раз, когда я пробую, в таблице ничего не появляется

Alexander Rayner 07.06.2018 03:57

Да, возможно, но также, возможно, он выполняется, и изображение не отображается при извлечении из-за неправильного имени, и он предполагает, что оно не вставлено.

Amr Berag 07.06.2018 04:02

Вы можете разместить свой код HTML-формы? вы используете multipart?

Amr Berag 07.06.2018 04:04

@AmrBerag Я вижу таблицу phpmyadmin ... Она не вставляется. Мой html-код не проблема. Изображение помещается в папку, как и предполагалось, с уникальным идентификатором, проблема в коде, который вставляет имена в базу данных.

Alexander Rayner 07.06.2018 04:15

Вы можете найти ошибки с помощью инструментов разработчика Firefox. Вам необходимо получить доступ к ответу на ваш почтовый запрос и его заголовки. обратитесь к моему последнему комментарию к вопросу

Amr Berag 07.06.2018 04:22

также измените строку запроса на это: $ result = mysqli_query ($ conn, $ sql) or die (mysqli_error ($ conn));

Amr Berag 07.06.2018 04:36

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