Хорошо, поэтому я придумал способ загружать изображения на свой веб-сайт форума, проверив базу данных, а также вставив заголовок изображения в базу данных. Когда я показываю изображение, оно проверяет, верна ли проверка, и, если это так, повторяет тег 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!";
}
}
@ user3783243, как мне это сделать. Я попытался повторить переменную после того, как должна была произойти вставка, но у меня буквально нет вывода. Что теперь?
Вы не можете повторить логическое значение, попробуйте var_dump($result); и используйте функцию сообщения об ошибках, которую я связал
@ user3783243 Я не знаю, что ищу. Я действительно не очень хорошо владею синтаксисом PHP. В ссылке нет ничего, что я понимаю
Вам нужно научиться читать эти ссылки. Это руководство, в котором рассказывается все, что вам нужно знать. Поместите mysqli_query в условное и добавьте внутрь printf("Errormessage: %s\n", mysqli_error($conn));. Посмотрите Procedural style из примера 1 по ссылке.
@ user3783243 Я даже не знаю, что это значит. Я запутался больше. Я использовал один и тот же сценарий бесчисленное количество раз без каких-либо ошибок, и если бы я знал, как читать эти руководства, я бы уже это сделал, но я новичок и понятия не имею, что делаю. Очевидно, что вы знаете, что делать лучше, чем я, поэтому, если бы вы могли указать мне где-нибудь, где я мог бы обработать это в размерах укуса, я был бы признателен за это
Я ничего подобного не знаю, это руководство - это то, чему я научился и что использую. Взгляните на pastebin.com/k8ypyv7P. Также, почему имя таблицы хранится в сеансе, это кажется плохой идеей. В руководстве есть 4 раздела Description, в которых рассказывается, что делает функция. Parameters, который он принимает / ожидает. Return Values, который функция возвращает. И затем Examples, который показывает точное использование.






Сначала измените $ fileName на $ fileNameNew в строке $ sql
затем также измените строку запроса на это:
$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
теперь ответ на почтовый запрос должен содержать ошибку.
Это приведет к связыванию неправильного файла, а не к невыполнению запроса.
Это все еще не работает. Проблема в том, что SQL не вставляет имя в базу данных. Каждый раз, когда я пробую, в таблице ничего не появляется
Да, возможно, но также, возможно, он выполняется, и изображение не отображается при извлечении из-за неправильного имени, и он предполагает, что оно не вставлено.
Вы можете разместить свой код HTML-формы? вы используете multipart?
@AmrBerag Я вижу таблицу phpmyadmin ... Она не вставляется. Мой html-код не проблема. Изображение помещается в папку, как и предполагалось, с уникальным идентификатором, проблема в коде, который вставляет имена в базу данных.
Вы можете найти ошибки с помощью инструментов разработчика Firefox. Вам необходимо получить доступ к ответу на ваш почтовый запрос и его заголовки. обратитесь к моему последнему комментарию к вопросу
также измените строку запроса на это: $ result = mysqli_query ($ conn, $ sql) or die (mysqli_error ($ conn));
Проверьте, что такое
$result, прежде чем говоритьsuccess. Проверить на наличие ошибок. php.net/manual/en/mysqli.error.php Вы также открыты для инъекций SQL, параметризуйте.