zenithxxl
@zenithxxl
Начинающий веб-разработчик

Не работает INSERT INTO, почему?

В один момент, файл добавления поста перестал работать
<div class="content ">
			<form action="create.php" method="post" enctype="multipart/form-data">
				<input name="name" type="text" placeholder="Название"><br>

				<input name="img" type="file">
				<!-- <h2>Постер(горизонтальный), название_файла.формат</h2><br> -->

				<input  name="img_vert" type="file">
				<!-- <h2>Постер(вертикальныкй), название_файла.формат</h2><br> -->

				<input name="trayler" type="file">
				<!-- <h2>Трейлер(формат webm), название_файла.формат</h2><br> -->

				<select name="select">
					<?php
	        				while ($cate = mysqli_fetch_assoc($categories)) {
	        				?>
	          				<option value="<? echo $cate['id'] ?>"><?php echo $cate['title'] ?></option>
	        				<?php
	        				}
	     				?>
				</select>
				<textarea value="<?php echo @$data['state']; ?>" name="state" type="text" placeholder="Доп. информация" cols="30"></textarea><br>
				<textarea value="<?php echo @$data['sinops']; ?>" name="sinops" type="text" placeholder="Синопсис" cols="30"></textarea><br>
				<textarea value="<?php echo @$data['roles']; ?>" name="roles" type="text" placeholder="В ролях" cols="30"></textarea><br>
				<textarea value="<?php echo @$data['creators']; ?>" name="creators" type="text" placeholder="Создатели" cols="30"></textarea><br>
				<textarea value="<?php echo @$data['awards']; ?>" name="awards" type="text" placeholder="Награды" cols="30"></textarea><br>
				<button name="do" class="btn-primary" type="submit">Создать</button>
			</form>
			<?php

				if (isset($_POST['do'])) {

					$fileName = $_FILES['img']['name'];
					// var_dump($_FILES);
					// var_dump($_POST);
					// exit();
					$fileTmpName = $_FILES['img']['tmp_name'];
					$fileType = $_FILES['img']['type'];
					$fileExt = explode('.', $fileName);
					$fileActualExt = strtolower(end($fileExt));

					if (isset($_SESSION['logged_user'])) {
						$fileNameNew = uniqid('', true).".".$fileActualExt;
						$fileDestination = 'assets/project/Постеры/' . $fileNameNew;
						move_uploaded_file($fileTmpName, $fileDestination);
						echo "Файл загружен!";

					} 

					$fileNameTWO = $_FILES['img_vert']['name'];
					$fileTmpNameTWO = $_FILES['img_vert']['tmp_name'];
					$fileTypeTWO = $_FILES['img_vert']['type'];
					$fileExtTWO = explode('.', $fileNameTWO);
					$fileActualExtTWO = strtolower(end($fileExtTWO));

					if (isset($_SESSION['logged_user'])) {
						$fileNameNewTWO = uniqid('', true).".".$fileActualExtTWO;
						$fileDestinationTWO = 'assets/project/Постеры/' . $fileNameNewTWO;
						move_uploaded_file($fileTmpNameTWO, $fileDestinationTWO);
						echo "Файл загружен!";
					} 

					$fileNameTRAYLER = $_FILES['trayler']['name'];
					$fileTmpNameTRAYLER = $_FILES['trayler']['tmp_name'];
					$fileTypeTRAYLER = $_FILES['trayler']['type'];
					$fileExtTRAYLER = explode('.', $fileNameTRAYLER);
					$fileActualExtTRAYLER = strtolower(end($fileExtTRAYLER));

					if (isset($_SESSION['logged_user'])) {
						$fileNameNewTRAYLER = uniqid('', true).".".$fileActualExtTRAYLER;
						$fileDestinationTRAYLER = 'assets/project/Трейлеры/' . $fileNameNewTRAYLER;
						move_uploaded_file($fileTmpNameTRAYLER, $fileDestinationTRAYLER);
						echo "Файл загружен!";
						mysqli_query($connect, "INSERT INTO `films`(`img`, `img_vertical`, `trayler`,`film_categories`, `name`, `state`, `sinops`, `roles`, `creators`, `awards`) VALUES ('".$fileNameNew."','".$fileNameNewTWO."', '".$fileNameNewTRAYLER."', '".$_POST['select']."', '".$_POST['name']."','".$_POST['state']."','".$_POST['sinops']."','".$_POST['roles']."','".$_POST['creators']."', '".$_POST['awards']."')");						
					} 																
				}
			?>
		</div>

Я пробовал var_dump-ить и $_FILES и $_POST. После первого нажатия на кнопку ничего не выводится. А когда все значения пустые выводит.
  • Вопрос задан
  • 294 просмотра
Решения вопроса 2
@Mylistryx
return $fileNameNewTRAYLER; -> тут мы вышли, дальше код не исполняется!

mysqli_query($connect ... хоть и говнокод, просто поднять перед return
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Открой MySQL консоль и выполни эту команду с конкретными параметрами

INSERT INTO `films`(`img`, `img_vertical`, `trayler`,`film_categories`, `name`, `state`, `sinops`, `roles`, `creators`, `awards`) VALUES (................


Увидишь ошибку и пояснение. Предположительно там идет нарушение unique key либо констрейнта not null.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lastor
@Lastor
В чем сила, брат? В ньютонах.
Если insert into вызывает ошибку из-за дубликата, это можно решить разными способами.
1. Перед вставкой выполнить запрос, проверяющий, есть ли такая запись.
2. Использовать insert ignore into. Это приведёт к тому, что при наличии дубликата запись не будет добавлена, но при этом выполнение скрипта продолжится.
3. Использовать replace into. В этом случае старая запись будет заменена новой. Но если у какой-то другой таблицы создана связь с этой посредством foreign key с каскадной реакцией, это приведёт к удалению всех ссылающихся на этот ключ записей.
4. Использовать on duplicate key update:
insert into films (img, img_vertical, trayler...) values (:img, :img_vertical, :trayler...)
  on duplicate key update  
set img = :imgUpd , img_vertical = :img_verticalUpd, trayler = :trayler итд  ...;

прочее

Часть ответа пришлось удалить, поскольку за педагогические услуги мне не платят.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
02 мая 2024, в 21:59
15000 руб./за проект
02 мая 2024, в 21:54
1000 руб./в час
02 мая 2024, в 21:27
300000 руб./за проект