PHP / AJAX将XML数据导入MySQL数据库无法正常工作

时间:2017-11-01 04:44:29

标签: php mysql ajax xml

我正在尝试使用$.post(url, $("#MainReturnForm").serialize(), function (res) { $(id).append(res); }); / PHP上传Ajax文件并将数据导入我的数据库。这一切似乎运行顺利,我有按钮工作和一个功能,通知我文件是否已上传,但是当我去查看我的数据库时,信息不在那里。

(我正在按照教程,尝试根据自己的需要/ XML文件结构进行调整)。

XML

我对此很新,所以请善待。

[$ i]在数组中的节点后意味着什么?我有一种感觉,我的XML文件的复杂性令人困惑,我把它置于错误的位置?教程XML文件只有2个节点,因此结构如此;

if(isset($_FILES['file']['name']) &&  $_FILES['file']['name'] != '')
{
    $valid_extension = array('xml');
    $file_data = explode('.', $_FILES['file']['name']);
    $file_extension = end($file_data);
    if(in_array($file_extension, $valid_extension))
    {
        $data = simplexml_load_file($_FILES['file']['tmp_name']);
        $connect = new PDO('mysql:host=localhost;dbname=hpr_db','root','root');
        $query = "
        INSERT INTO data(userid, firstname, lastname, objectid, productkey, logvolume, loglength)
        VALUES(:userid, :firstname, :lastname, :objectid, :productkey, :logvolume, :loglength);";
        $statement = $connect->prepare($query);

        for($i = 0; $i < count($data); $i++)

        $statement->execute(
            array(
            ':userid'       =>  $data->Machine->MachineUserID,
            ':firstname'    =>  $data->Machine->OperatorDefinition->ContactInformation[$i]->FirstName,
            ':lastname'     =>  $data->Machine->OperatorDefinition->ContactInformation[$i]->LastName,
            ':objectid'     =>  $data->Machine->ObjectDefinition[$i]->ObjectUserID,
            ':productkey'   =>  $data->Machine->SingleTreeProcessedStem->Log[$i]>ProductKey,
            ':logvolume'    =>  $data->Machine->SingleTreeProcessedStem->Log[$i]->LogVolume,
            ':loglength'    =>  $data->Machine->SingleTreeProcessedStem->Log->LogMeasurement[$i]->LogLength,
            )
        );
    }

    $result = $statement->fetchAll();
    if(isset($result))
    {
        $output = '<div class="alert alert-success">Import Data Done</div>';
    }
}
else
{
    $output = '<div class="alert alert-warning">Invalid File</div>';
}

对于更复杂的':name' => $data->employee[$i]->name, ':position' => $data->employee[$i]->position, 文件,结构是什么?或者我完全忽略了这一点。

1 个答案:

答案 0 :(得分:0)

我有同样的需要,最后使用了PHPExcel

首先,您需要使用PHPExcel。之后,读取您的xls文件并将数据插入数据库。

使用以下结构读取xls文件并将其转换为PHP数组:

function fileInitializer($file, $needCells){
 $array_data = array();
 require_once 'libraries/PHPExcel/PHPExcel.php';
 $objPHPExcel = new PHPExcel();
 $target_dir = "FILEPATH/".$file;
 $objReader= new PHPExcel_Reader_Excel5();
 $objReader->setReadDataOnly(true);
 $objPHPExcel = $objReader->load( $target_dir);
 $rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator();
 $rowIndex = 0;
 foreach($rowIterator as $row){
     $cellIterator = $row->getCellIterator();
     $cellIterator->setIterateOnlyExistingCells(false); 
     if(1 == $row->getRowIndex ()) continue;

    foreach ($cellIterator as $cell) {
        foreach($needCells as $needCell){
            if($needCell['cell_name'] == $cell->getColumn()){
                $array_data[$rowIndex][$needCell['array_name']] = fai_convert_string_to_persian($cell->getCalculatedValue());
            } 
        }
    }
    $rowIndex++;
}
return $array_data;
}
$file = 'FILENAME';
$needCells = array(
     array('cell_name'=>'A', 'array_name'=>'id')
    , array('cell_name'=>'B', 'array_name'=>'full_name')
);
$array_data = fileInitializer($file, $needCells);

并且在上面的过程中有一段时间在$ array_data中并将数据添加到数据库