Если $rating присвоить null строка в таблицу базы не вставляется?

0
<?php 

	function insert($name, $desc, $year, $rating, $poster, $category_id) {
		$mysqli = new mysqli('localhost', 'root', 'root', 'kinomonster');

		if(mysqli_connect_errno()) {
			print_f('Соедение не установлено');
			exit();
		}

		
		$mysqli->set_charset('utf8');

		$query = "INSERT INTO movie VALUES(null, '$name', '$desc', '$year', '$rating', '$poster', Now(), '$category_id')";

		//$query = "INSERT INTO movie (`name`, `descriptions`, `year`, `rating`, `poster`, `add_date`, `category_id`) VALUES ('$name', '$desc', '$year', '$rating', '$poster', Now(), '$category_id')";

		$result = false;

		//if($mysqli->query($query)) 
		if( $mysqli->query($query) or die( $mysqli->error ) ) 
		{
			$result = true;
		}

		return $result;
	}






	$xml = simplexml_load_file("xml/movies.xml") or die("Error: Cannot create object");

	//echo count($xml);

	$title = null;
	$title_orign = null;
	$post = null;
	$rating = null;
	$year = null;

	foreach ($xml as $movie_key => $movie) {
		$title = $movie->title_russian;
		$title_orign = $movie->title_original;
		$year = $movie->year;


		foreach ($movie->poster->big->attributes() as $poster_key => $poster) {
			$post = $poster;
		}

		if($movie->imdb) {
			$rating = $movie->imdb->attributes()['rating'];
		} else {
			$rating = 0;    //Если присвоить null строка не вставляется (Incorrect double value: '' for column `kinomonster`.`movie`.`rating` at row 1)
		}

		insert($title, $title_orign, $year, $rating, $post, 1);

	}

	echo "<pre>";
	print_r($xml);
	echo "</pre>";

?>
php

5 ответов

1

В уроке есть подсказка:

При вставке в базу данных вы можете использовать и такой формат записи, где можно указывать название полей для вставки (соблюдая последовательность):

$query = "INSERT INTO movie (`name`, `descriptions`, `year`, `rating`, `poster`, `add_date`, `category_id`) VALUES ('$name', '$desc', '$year', '$rating', '$poster', Now(), '$category_id')";

https://fructcode.com/ru/courses/php-and-mysql/video-parse-xml-to-mysql/

0

Здесь где-то был ответ от Сергея, по поводу данного задания, мне помог решить проблему. Суть там в том, чтобы разделить эту задачу на несколько подзадач, первая из которых будет функция insert. Когда функция готова, нужно проверить ее работоспособность на вставку данных вручную, типа такого:

insert('какойтофильм', 'origin', 2020, 10, 'img.jpg', 1);

Если вставка такая работает, далее нужно реализовывать вывод из xml файла, а уже только потом все вместе соединять.

0

Можно попробовать проверить структуру таблицы в базе данных, может где-то параметры с ошибками или из исходного кода дамп взять и у себя развернуть, в исходнике всегда работает.

0

Выше в коде эта строка заремарена, так тоже не проходит :(

0

Строки где $rating не присвоено null вставляются;

также работает $rating = 0;

Sign up or Log in to write an answer