Есть ошибка в коде, но все отрабатывается и записывается в базу, не понимаю что именно?

0

Warning: SimpleXMLElement::__toString(): Node no longer exists in C:\xampp\htdocs\KinoMonstr\index.php on line 14

<?php 
	
	function insert ($name, $desc, $year, $rating, $poster, $category_id) {
		$mysqli = new mysqli("localhost", "root", "", "kinomonstr");
		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')";

	$result = false;

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


$xml= simplexml_load_file("xml_files/movies.xml") or die ("Error: Cannot creat object");
	//echo count($xml);

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



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

		/*foreach ($movie->description->attributes()['opis'] as $desc_key => $description) {
			$desc = $description;
		}*/
			if($movie->description) {
			$desc = $movie->description->desc->attributes();
			};
			


		foreach ($movie->poster->big->attributes() as $poster_key => $poster) {
		 $post = $poster;
		}
		if($movie->imdb) {
			$rating = $movie->imdb->attributes()['rating'];
			}else {
			$rating = null;
		}	
		

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

}


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


?>



php

1 ответов

0

SimpleXML всегда возвращает объект. Вам нужно перевести объекты в string, можно пользоваться функцией strval:

https://www.php.net/manual/en/function.strval.php

Примерно так: 

$rating = strval($movie->imdb->attributes()['rating']);

Это касается и других объектов из $movie.

Sign up or Log in to write an answer