Задать вопрос
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. После первого нажатия на кнопку ничего не выводится. А когда все значения пустые выводит.
  • Вопрос задан
  • 434 просмотра
Подписаться 1 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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 итд  ...;

прочее

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽