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. После первого нажатия на кнопку ничего не выводится. А когда все значения пустые выводит.
  • Вопрос задан
  • 346 просмотров
Решения вопроса 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 итд  ...;

прочее

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

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

Похожие вопросы