Есть ошибка в коде, но все отрабатывается и записывается в базу, не понимаю что именно?
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>"
?>
1 ответов
0
SimpleXML всегда возвращает объект. Вам нужно перевести объекты в string, можно пользоваться функцией strval:
https://www.php.net/manual/en/function.strval.php
Примерно так:
$rating = strval($movie->imdb->attributes()['rating']);
Это касается и других объектов из $movie.