PHP 读取XML大文件格式并将其存入数据库中


<?php     $xml = new XMLReader(); $xmlfile="./full_database.xml";#文件路径   $xml->open($xmlfile);   $i=0;   while($xml->read()) {     if($xml->name=='drug-interaction' and $xml->nodeType==XMLReader::ELEMENT) { // 进入 drug-interaction         $inXml = $xml->readOuterXML(); // 获取当前整个 drug-interaction 内容(字符串)         $inXml = simplexml_load_string($inXml); // 转换成 SimpleXMLElement 对象         // 查询出来之后存到数据库中         $conn=mysqli_connect("localhost","root","qwertyuip","qin-data"); if(!$conn) { die("连接数据库失败".mysqli_connect_errno($conn)); }else{ echo "成功
"; } mysqli_select_db($conn,"qin-data"); //设置字符集 mysqli_query($conn,"set name utf8");         // var_dump(object2array($inXml));die;         $inXml = object2array($inXml);         // var_dump($inXml['drugbank-id']);die;         $data['id'] = $inXml['drugbank-id'];         $data['name'] = $inXml['name'];         $data['description'] = $inXml['description'];         $sql = "INSERT INTO interaction(id, name, description) VALUES('$data[id]','$data[name]','$data[description]')";         $res=mysqli_query($conn,$sql);         // var_dump($res);die;         mysqli_close($conn); } $i++;     // 继续读取 直到进入下一个 object // if($i>5000){ //  continue; // } }     function object2array(&$object) {     $object =  json_decode( json_encode( $object),true);     return  $object; }    

需要注意几点:

1.使用mysqli 原生语句链接

2.使用simplexml_load_string 获取到值后为对象格式,应使用PHP转成数据格式在提取值

3.注意原生sql语句在PHP中的写法  , 字符串或者变量应该使用单引号'' 扩起来 ,外层使用双引号。