<?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 "成功<br/>";
}
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中的写法 , 字符串或者变量应该使用单引号\'\' 扩起来 ,外层使用双引号。