2016-08-12 58 views
0

我需要将XML文件导入到MySQL数据库中。 我已经得到了一个代码 - 但它已经过了几年了,并且不使用PDO,而且我现在还没有在一台使用PHP7和MySQL 5.5的新服务器上工作。用PDO将XML文件导入mySQL

如果有人可以帮我解决问题,那将会非常好。

我的XML文件:

<amateures> 
    <amateur> 
    <id> 
    <login> 
    <figur> 
    <vote_rating> 
    <haarfarbe> 
    <gewicht> 
    <groesse> 
    <plz> 
    <sternzeichen> 
    <vorlieben> 
    <vorlieben_en> 
    <uebermich> 
    <uebermich_en> 
    <geschlecht> 
    <staat> 
    <gebtag> 
    <regdate> 
    <urls> 
     <profil> 
     <register> 
    </urls> 
    <images> 
     <overview> 
     <overview_fsk16> 
     <overview_big> 
     <overview_fsk16_big> 
    </images> 
    <videos> 
     <video> 
     <title> 
     <title_en> 
     <beschreibung> 
     <beschreibung_en> 
     <playtime> 
     <id> 
     <img_fsk16> 
     <img> 
     <imgani> 
     <videourl> 
     <category> 
     <category> 
     <category> 
     </video> 
    </videos> 
    </amateur> 

    <amateur> 
    [...] 
    </amateur> 
</amateures> 

我需要在3个表中的数据:

下面的数据,我需要为表 “amateure”:

<amateur> 
    <id> 
    <login> 
    <figur> 
    <vote_rating> 
    <haarfarbe> 
    <gewicht> 
    <groesse> 
    <plz> 
    <sternzeichen> 
    <vorlieben> 
    <vorlieben_en> 
    <uebermich> 
    <uebermich_en> 
    <geschlecht> 
    <staat> 
    <gebtag> 
    <regdate> 
    <urls> 
     <profil> 
     <register> 
    </urls> 
    <images> 
     <overview> 
     <overview_fsk16> 
     <overview_big> 
     <overview_fsk16_big> 
    </images> 
    </amateur> 

表 “amateur_vid” 应该包含:

<videos> 
    <video> 
    <title> 
    <title_en> 
    <beschreibung> 
    <beschreibung_en> 
    <playtime> 
    <id> 
    <img_fsk16> 
    <img> 
    <imgani> 
    <videourl> 
    </video> 
</videos> 

和表“amateur_cat”应包含以下内容:

<category> 

从节中的字段“ID”必须是从部分添加到餐桌“amateur_vid”和申请“ID”必须被添加到表中“amateur_cat”。

这是我的代码 - 在这种情况下,只会导入一个类别。我不知道如何在节点做一个循环:

#!/usr/bin/php -n 
<?php 
function OpenDB() { 
    $connect = mysqli_connect('localhost','#','#'); 
    if(!$connect) 
    die ("Connection to SQL-Server failed!"); 
    $database = mysqli_select_db($connect, "DATABASE"); 
    if(!$database) 
    die ("Selection of Database failed!"); 
    return $connect; 
} 
$connect = OpenDB(); 

$count = 0; 
$countnew = 0; 
$countvid = 0; 
$starttime = time(); 

$xml = simplexml_load_file("FILE.xml"); 

$query = "update amateur set deleted = 1"; 
mysqli_query($connect, $query); 

$query = "delete from amateur_vid"; 
$res = mysqli_query($connect, $query); 

foreach ($xml->amateur as $amateur) { 
    $count++; 
    $amateur_id     = $amateur->id; 
    $amateur_login    = utf8_decode($amateur->login); 
    $amateur_figur    = $amateur->figur; 
    $amateur_vote_rating  = $amateur->vote_rating; 
    $amateur_haarfarbe   = $amateur->haarfarbe; 
    $amateur_gewicht   = $amateur->gewicht; 
    $amateur_groesse   = $amateur->groesse; 
    $amateur_plz    = $amateur->plz; 
    $amateur_sternzeichen  = $amateur->sternzeichen; 
    $amateur_vorlieben   = $amateur->vorlieben; 
    $amateur_vorlieben_en  = $amateur->vorlieben_en; 
    $amateur_uebermich   = $amateur->uebermich; 
    $amateur_uebermich_en  = $amateur->uebermich_en; 
    $amateur_geschlecht   = $amateur->geschlecht; 
    $amateur_staat    = $amateur->staat; 
    $amateur_gebtag    = $amateur->gebtag; 
    $amateur_regdate   = $amateur->regdate; 

    foreach ($amateur->urls as $url) { 
    $amateur_profil    = $url->profil; 
    $amateur_register   = $url->register; 
    } 

    foreach ($amateur->images as $image) { 
    $amateur_overview   = $image->overview; 
    $amateur_overview_fsk16  = $image->overview_fsk16; 
    $amateur_overview_big  = $image->overview_big; 
    $amateur_overview_fsk16_big = $image->overview_fsk16_big; 
    } 

    $amateur_vorlieben   = mysqli_escape_string($connect, $amateur_vorlieben); 
    $amateur_vorlieben_en  = mysqli_escape_string($connect, $amateur_vorlieben_en); 
    $amateur_uebermich   = mysqli_escape_string($connect, $amateur_uebermich); 
    $amateur_uebermich_en  = mysqli_escape_string($connect, $amateur_uebermich_en); 

    $query = "select * from amateur where amateur_id = $amateur_id"; 
    $res = mysqli_query($connect, $query); 

    if(mysqli_num_rows($res) == 0) { 
    $countnew++; 
    $query = "insert into amateur (amateur_id, amateur_login, amateur_figur, amateur_vote_rating, amateur_haarfarbe, amateur_gewicht, amateur_groesse, amateur_plz, amateur_sternzeichen, amateur_vorlieben, amateur_vorlieben_en, amateur_uebermich, amateur_uebermich_en, amateur_geschlecht, amateur_staat, amateur_gebtag, amateur_regdate, amateur_profil, amateur_register, amateur_overview, amateur_overview_fsk16, amateur_overview_big, amateur_overview_fsk16_big) values ($amateur_id, '$amateur_login', '$amateur_figur', '$amateur_vote_rating', '$amateur_haarfarbe', '$amateur_gewicht', '$amateur_groesse', '$amateur_plz', '$amateur_sternzeichen', '$amateur_vorlieben', '$amateur_vorlieben_en', '$amateur_uebermich', '$amateur_uebermich_en', '$amateur_geschlecht', '$amateur_staat', '$amateur_gebtag', '$amateur_regdate', '$amateur_profil', '$amateur_register', '$amateur_overview', '$amateur_overview_fsk16', '$amateur_overview_big', '$amateur_overview_fsk16_big')"; 
    $res = mysqli_query($connect, $query); 
    } else { 
    $query = "update amateur set amateur_login='$amateur_login', amateur_figur='$amateur_figur', amateur_vote_rating='$amateur_vote_rating', amateur_haarfarbe='$amateur_haarfarbe', amateur_gewicht='$amateur_gewicht', amateur_groesse='$amateur_groesse', amateur_plz='$amateur_plz', amateur_sternzeichen='$amateur_sternzeichen', amateur_vorlieben='$amateur_vorlieben', amateur_vorlieben_en='$amateur_vorlieben_en', amateur_uebermich='$amateur_uebermich', amateur_uebermich_en='$amateur_uebermich_en', amateur_geschlecht='$amateur_geschlecht', amateur_staat='$amateur_staat', amateur_gebtag='$amateur_gebtag', amateur_regdate='$amateur_regdate', amateur_profil='$amateur_profil', amateur_register='$amateur_register', amateur_overview='$amateur_overview', amateur_overview_fsk16='$amateur_overview_fsk16', amateur_overview_big='$amateur_overview_big', amateur_overview_fsk16_big='$amateur_overview_fsk16_big', deleted=0 where amateur_id = $amateur_id"; 
    $res = mysqli_query($connect, $query); 
    if(!$res) 
     die($query); 
    } 

    foreach ($amateur->videos as $videos) { 
    foreach ($videos->video as $video) { 
     $vids_title   = $video->title; 
     $vids_title_en  = $video->title_en; 
     $vids_beschreibung = $video->beschreibung; 
     $vids_beschreibung_en = $video->beschreibung_en; 
     $vids_playtime  = $video->playtime; 
     $vids_id    = $video->id; 
     $vids_img_fsk16  = $video->img_fsk16; 
     $vids_img    = $video->img; 
     $vids_imgani   = $video->imgani; 
     $vids_videourl  = $video->videourl; 
     $vids_category  = $video->category; 

     $query = "insert into amateur_vid (amateur_id, vids_title, vids_title_en, vids_beschreibung, vids_beschreibung_en, vids_playtime, vids_id, vids_img_fsk16, vids_img, vids_imgani, vids_videourl, vids_category) values ($amateur_id, '$vids_title', '$vids_title_en', '$vids_beschreibung', '$vids_beschreibung_en', '$vids_playtime', '$vids_id', '$vids_img_fsk16', '$vids_img', '$vids_imgani', '$vids_videourl', '$vids_category')"; 
     $res = mysqli_query($connect, $query); 
     $setid = mysqli_insert_id($connect); 
     $countvid++; 
    } 
    } 

} 

$query = "delete from amateur where deleted = 1"; 
mysqli_query($connect, $query); 
?> 

我会真的很高兴,如果有人可以帮助我的工作代码段我的问题。

在此先感谢。

Bee

+0

你有一个代码?发表它! SO不是代码服务 – lokusking

+0

我现在添加了代码。 – bee

回答

0

我可以改变我的旧脚本,它现在正在工作。

我没有得到的唯一工作是<categories>部分。

我需要在一个单独的表中的类别 - 或者,添加分类到一个字段的类别逗号。

有人有这个解决方案吗?