0

我尝试解析一个 xml 文件并将每个节点存储到一个 mysql 数据库。问题在于它将数据存储在第一个循环中并在第二次返回错误。如果我刷新页面,它也会存储其余数据。

我试图理解为什么它会以这种方式表现

<?php

try{
    $records = simplexml_load_file("file.xml");
} catch (Exception $e){
    echo "xml problem";
}


#replace loclhost,user, pass, dbname
$db = mysqli_connect("localhost", "root", "", "project") or die("could not connect:" . mysqli_connect_error());

foreach($records->record as $rec){
    $species_location_x = $rec->species_lang;
    $species_location_y = $rec->species_long;
    $species_abundance = (string)$rec->abundance;
    $species_text = (string)$rec->text;
    $species_scene_photo = (string)$rec->space_photo;
    $species_photo_loc = (string)$rec->specimen_photo;

    $site_name = (string)$rec->site->sitename;
    $site_location = (string)$rec->site->sitelocation;
    $site_description = (string)$rec->site->sitedescription;

    $user_name = (string)$rec->user->lastname;
    $user_phone = (string)$rec->user->namephone;
    $user_email = (string)$rec->user->useremail;

    $species_name = (string)$rec->species->species_name;


#print_r($species_location_x." ".$species_location_y." ".$species_abundance." ".$species_text." ".$species_scene_photo." ".$species_photo_loc);
#print_r($site_name." ".$site_location." ".$site_description);
#print_r($user_name." ".$user_phone." ".$user_email);
#print_r($species_name);

    $multiq = "INSERT INTO users (user_name, user_phone, user_email)
               VALUES ('$user_name', '$user_phone', '$user_email');" ;

    $multiq .= "INSERT INTO records (user_name, record_location, record_abundance, record_text, record_scene_photo_location, record_specimen_photo_location )
                VALUES ( '$user_name',
                  GeomFromText('point($species_location_x $species_location_y)'),
                   '$species_abundance',
                   '$species_text',
                   '$species_scene_photo',
                   '$species_photo_loc');" ;

     $multiq .= "INSERT INTO species (species_name, records_id )
                 VALUES ( '$species_name', (select record_id from records where user_name = '$user_name' and record_abundance = '$species_abundance' and record_text = '$species_text'));" ;

     $multiq .= "INSERT INTO sites (site_name, site_location, site_description, species_id)
                 VALUES ('$site_name', '$site_location', '$site_description', (select species_id from species where species_name='$species_name'));";


    if(mysqli_multi_query($db, $multiq)){
        echo "records added successfully\n";
        }
        else{
    echo "problem";
    }
}
mysqli_close($db);
4

0 回答 0