Что не так в коде?
function insert($name, $desc, $year, $rating, $poster, $category_id) {
$mysqli = new mysqli('localhost', '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')";
$result = false;
if($mysqli->query($query)) {
$result = true;
}
return $result;
}
$xml = simplexml_load_file("xml/movies.xml") or die("Error: Cannot create object");
$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'];
}
insert($title, $title_orign, $year, $rating, $post, 1);
}
echo "<pre>";
print_r($xml);
echo "</pre>";
?>
А вот что база говорит
MySQL вернула пустой результат (т.е. ноль строк). (Запрос занял 0,0009 сек.)
2 ответов
Возможно у вас где-то в структуре базы данных ошибка, поэтому не вставляются данные. Вот здесь есть в ответах рекомендация как развернуть базу данных к этому уроку и запустить код:
https://fructcode.com/ru/qa/ne-dobavlaetsa-zapis-iz-xml-v-bd-cto-delau-nepravilno-ipmigv/
Потом можно сравнить свою структуру базы данных с оригинальной.
Спасибо. Нашел ответ. Помогла только вставка кода в SQL в базе
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; CREATE TABLE `movie` ( `id` int(5) NOT NULL, `name` varchar(255) NOT NULL, `descriptions` text NOT NULL, `year` int(4) NOT NULL, `rating` float(3,1) NOT NULL, `poster` varchar(255) NOT NULL, `add_date` datetime NOT NULL, `category_id` tinyint(4) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `movie` ADD PRIMARY KEY (`id`); ALTER TABLE `movie` MODIFY `id` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=111; COMMIT;