Импорт информации из xml в mysql с помощью php + mysqli в цикле
Category: SQL code examples
<?php /* отключаем выполнение файла (цель - исключить вероятность того, что он выполнится раньше времени и запорет БД) */ die; /* обнуляем все переменные */ $date = ''; $index = ''; $name = ''; $title = ''; $image = ''; /* подключаемся к БД */ $mi=new mysqli("HOST", "USER", "PASS", "DB_NAME"); $mi->set_charset("utf8"); if($mi->connect_errno): die($mi->connect_error); endif; /* указываем адрес + название используемого файла (если он в корне - просто название) */ $xml = simplexml_load_file('xml_file_name.xml'); /* указываем количество обрабатываемых значений из файла xml */ // указываем определенное количество $num = 46; // еще вариант - вынуть все данные из xml-файла: $num = count ($xml->NAME_STR); где NAME_STR - название блока данных /* запускаем цикл */ for ($i = 0; $i < $num; $i++) { /* По умолчанию указанный ниже код будет дописывать в БД строчку с ID на 1 больше от последней записанной если мы хотим указать номера строк самостоятельно - вписываем свое значение вместо цифры 400: именно с этой цифры и начнется публикация. Помните, что если в указанных строках уже есть информация - новые данные будут перезаписаны поверху. */ $id = $i+400; /* перед считыванием данных из xml - обнуляем переменные */ $date = ''; $index = ''; $name = ''; $title = ''; $image = ''; /* помещаем в переменные значения полей из xml файла */ $se = $xml->NAME_STR[$i]->{'title'}; $en = $xml->NAME_STR[$i]->{'info'}->{'date'}; $ru = $xml->NAME_STR[$i]->{'info'}->{'name'}; $no = $xml->NAME_STR[$i]->{'files'}->{'index'}; $image = $xml->NAME_STR[$i]->{'images'}->{'image'}[3]->{'url'}; // вынимаем URL 4-й фотографии /* добавляем новую строчку в БД */ $mi->query("insert into `DB_NAME` set `id`='$id', `date`='$date', `index`='$index', `name`='$name', `title`='$title', `image`='$image'"); /* выводим добавляемую в БД информацию на экран: */ echo 'date = '.$date.'<br/>'; echo 'index = '.$index.'<br/>'; echo 'name = '.$name.'<br/>'; echo 'title = '.$title.'<br/>'; echo 'image = '.$image.'<br/><br/>'; }