Не добавляется запись из xml в бд, что делаю неправильно?

0
0

Уже задавал этот вопрос, но он так и до конца и не решился. По совету Сергея Никонова я проверил функцию insert и она, как предполагалось не работает. Уже перегреб весь интернет (что в рамках моих знаний и умений),но ответа так и не нашел. Что мне делать? Обучение остановилось, так как я не могу внести в БД информацию. Как мне это сделать, чтобы продолжить обучение!?

<?php
	

	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_files/movies.xml") or die("Ошибка: не могу создать объект");

	

	//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_orignal;
		$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, $category_id);
	}

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



?>

Eugene Borisov

9 months ago

Похожие вопросы

5 ответов





Дамп базы данных приложите сюда, посмотрю что не так.

student_VPUq_wh0

9 months ago

Это то, что нужно?

<?xml version="1.0" encoding="UTF-8"?>

<!-- - phpMyAdmin XML Dump - version 4.9.2 - https://www.phpmyadmin.net - - Хост: 127.0.0.1 - Время создания: Янв 23 2020 г., 15:19 - Версия сервера: 10.4.10-MariaDB - Версия PHP: 7.3.12 -->

-<pma_xml_export xmlns:pma="https://www.phpmyadmin.net/some_doc_url/" version="1.0">

<!-- - Structure schemas -->

Eugene Borisov

9 months ago

Здравствуйте, Евгений

Скачайте исходный код к уроку. Справа сверху вкладка Файлы:

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

В папке \SEND\source\kinomonster лежат файлы к данному уроку. Просто скопируйте их в вашу папку настроенного вами веб-сервера (папка xml и index.php). В файле index.php задайте параметры подключения к вашей базе данных, в строчке:

$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');

Запустите скрипт из index.php в браузере. Данные их XML должны вставится в таблицу movie. 

Если данных нет, тогда проверяйте структуру вашей базы данных таблицы movie, чтобы она соответствовала уроку.

Если все равно не вставляются данные в таблицу movie, удалите в базе данных вашу таблицу movie. Для удаления таблицы movie выберите в phpmyadmin таблицу movie (нажав на название таблицы movie с левой стороны правой кнопкой мыши один раз) и перейдите на вкладку Operations и внизу справа вы должны увидеть ссылку Delete the table (DROP), она красного цвета. Нажмите на нее для того, чтобы таблица movie удалилась. Затем нажмите на название вашей базы данных (с левой стороны) в phpmyadmin, предполагаю, что ее название как в уроках kinomonster и перейдите во вкладку SQL и вставьте код в окно (Run SQL query/queries on database kinomonster):

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;

Затем нажмите на кнопку Go (она внизу справа). Вставленный код в окно SQL - это скрипт, который создает структуру базы данных movie автоматически.

Далее перезагрузите phpmyadmin в браузере и запустите скаченный исходный код из урока, о котором я говорил ранее. Данные из XML будут вставлены в таблицу movie.

Сергей Никонов

teacher

9 months ago

Спасибо, все заработало после того, как перенес ваши файлы в свою папку. Просто интересно, в чем была моя ошибка?

Eugene Borisov

9 months ago

Спасибо)) у меня также заработало. Не могу понять также в чём было ограничение?

student_G5tXuoBG

3 weeks ago

Ваш ответ