Почему не добавляет новый фильм в базу данных?
Задание 50 php. Не добавляет новый фильм в базу данных
<?php
$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
if(mysqli_connect_error()){
print("Нет соединения с базой данных");
exit();
}
$mysqli->set_charset('utf8');
/*$query = $mysqli->query('SELECT * FROM movie');
while($row = mysqli_fetch_assoc($query)){
echo $row['name'].$row['year']."<br>" ;
}*/
$query = "INSERT INTO movie VALUES(null, 'Безумный Макс', 'Описание фильма безумный Макс', '2015', Now())";
$query = "INSERT INTO movie VALUES(null, 'mmm', 'gggggg', '2019', Now())";
$mysqli->query($query);
$mysqli->close();
?>
2 ответов
1. У тебя 2 раза написано $query, должна быть только одна строчка с этой переменной:
$query = "INSERT INTO movie VALUES(null, 'Безумный Макс', 'Описание фильма безумный Макс', '2015', Now())";
$query = "INSERT INTO movie VALUES(null, 'mmm', 'gggggg', '2019', Now())";
2. Добавь отображение ошибок строчкой:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
т.е. скопируй и замени у себя на это:
$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
if(mysqli_connect_errno()) {
printf("Соединение не установлено", mysqli_connect_error());
exit();
}
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli->set_charset('utf8');
3. Проверь структуру базы данных, может забыл какое-то поле создать в базе.
4. Посмотри еще альтернативный способ:
https://fructcode.com/ru/courses/php-and-mysql/video-parse-xml-to-mysql/
При вставке в базу данных вы можете использовать и такой формат записи, где можно указывать название полей для вставки (соблюдая последовательность):
$query = "INSERT INTO movie (`name`, `descriptions`, `year`, `rating`, `poster`, `add_date`, `category_id`) VALUES ('$name', '$desc', '$year', '$rating', '$poster', Now(), '$category_id')";
где после movie вы можете перечислять название полей, в которые будут производиться вставки данных.
Удалила 2й $query.
Вылезла ошибка
Fatal error: Uncaught mysqli_sql_exception: Column 'id' cannot be null in /opt/lampp/htdocs/kinomonster/index.php:27 Stack trace: #0 /opt/lampp/htdocs/kinomonster/index.php(27): mysqli->query('INSERT INTO mov...') #1 {main} thrown in /opt/lampp/htdocs/kinomonster/index.php on line 27
Просто пронумеровала предыдущие 2 фильма и автоинкримент не срабатывал.
Спасибо ваш комментарий очень помог, вопрос решен.