Intereting Posts
Командный сон для паузы в течение 20 секунд, если условие выполнено Как повторять что-то каждые 4 минуты в бесконечном цикле Выполнение SQL напрямую; нет курсора., Состояние SQL 01000 в SQLExecDirect Можете ли вы использовать построитель запросов для построения запроса с динамическим предложением WHERE во время выполнения в laravel? Как gettext обрабатывает динамический контент? Как конвертировать «Y / m / dh: i A» формат даты и времени в метку времени Отправить переменную от контроллера к форме Определение содержимого вне контроллера? Форма PHP отправляет электронную почту нескольким получателям Строгие стандарты PHP: декларация должна быть совместимой SQL-парсер в PHP? Дополнительный месяц или день в поле даты MySQL в PHP Цепочка статических методов в PHP? php: получить каталог, в котором находится файл php / mysql – Проблема при перенаправлении на основе user_level

конвертировать XML-данные в mysql-запрос на вставку / обновление, используя php

Я работаю над этим проектом, который в основном считывает данные из XML-файла и вставляет / обновляет данные в базу данных mysql.

Вот пример файла sample.xml:

<table name="movies"> <column name="movie_name">Titanic</column> <column name="dvd">40</column> <column name="blueray">5</column> <column name="netflix">4</column> <column name="amazon">3</column> </table> 

Я разбиваю проблему на: 1) Получают значения из файла XML. 2) Вставьте извлеченные значения в базу данных mysql.

Я могу работать над вставкой значений в базу данных, но сложная часть получает значения из xml, что делает меня сумасшедшим.

Вот моя таблица базы данных выглядит так:

Название базы данных: Фильмы Столбцы: имя фильма, dvd, blueray, netflix, amazon

Вот код, который я пытался извлечь значения атрибута из xml.

 <?php $source = 'sample.xml'; // load as string $xml = new SimpleXMLElement($source,null,true); $movie_name= $xml->column->attributes()->name; echo $movie_name. "\n"; ?> 

Результат: вместо получения названия фильма «Титаник», я получаю «имя фильма».

Вы можете использовать этот запрос:

 <?php $source = 'sample.xml'; // load as string $xml = new SimpleXMLElement($source,null,true); $movie_name= $xml->column->attributes()->name; //echo $movie_name. "\n"; $table = $xml->attributes()->name; $columns =""; foreach($xml as $column){ $columns .= (string)$column->attributes()->name .","; } $columns = rtrim($columns, ","); $values =""; foreach($xml->column as $value){ $values .= $value ."," ; } $values = rtrim($values, ","); $query = " INSERTO INTO $table ( $columns ) VALUES ( $values ) "; echo $query; ?> 

Вы возвращаетесь именно к тому, что вы просили. attributes () смотрит на атрибуты, имя дает вам имя атрибута. Вы можете получить имя, сделав это

 $movieName = (string)$xml->column; 

Если вы хотите все значения, вы можете прокручивать столбцы

 foreach($xml->column as $xColumn) { $value = (string)$xColumn; } 

значение атрибута name IS movie_name. Titanic – это значение элемента Column, у которого есть атрибут name со значением.