Почему не добавляет новый фильм в базу данных?

0

Задание 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();
?>

php
mysql

2 ответов

1

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 вы можете перечислять название полей, в которые будут производиться вставки данных.
1

Удалила 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 фильма и автоинкримент не срабатывал.

Спасибо ваш комментарий очень помог, вопрос решен.

Sign up or Log in to write an answer