加载数据本地信息

时间:2012-02-04 07:47:46

标签: php mysql xml

我有一个XML文件,我想将该XML文件中的数据插入数据库

如果尝试使用以下代码,但它没有在datatase中存储数据

$sql = "LOAD DATA INFILE 'corporatenews/$zname' INTO TABLE `corporatenews` FIELDS TERMINATED BY '|' LINES STARTING BY '<row>' TERMINATED BY '</row>' (`ByLine`,`StoryId`,`PublishDate`,`Author`,`Category`,`SubCategory`,`TitleLine`,`SubTitleLine`,`StoryMain`,`Flag`)";

$ zname是存储xml文件名的变量

我试图通过mysql_error捕获错误但没有显示

1 个答案:

答案 0 :(得分:1)

通过尝试将文件直接推送到MySQL,看起来您可能会过度复杂化。对于一个简单的解决方案,您可以将整个XML文件读入内存w / file_get_contents ,然后将其从PHP插入MySQL。

编辑:每个OP请求澄清。

好的,有很多方法可以用PHP解析XML文件,这是IMO SimpleXML最简单的方法。基本上,您想要读入文件,然后迭代它,创建一堆 INSERT 语句。批量插入语句可能会更快,但暂时忘掉它。

代码将是这样的(此代码假定MySQL连接设置正确):

// iterate over XML elements
$oXml = new SimpleXMLElement('path/to/file.xml', 0, true);
foreach($oXml as $oElement) {
  // build main part of query
  $sSql = 'INSERT INTO (`ByLine`,`StoryId`,`PublishDate`,`Author`,`Category`,`SubCategory`,`TitleLine`,`SubTitleLine`,`StoryMain`,`Flag`) VALUES (';

  $sSql .= $oXml['ByLine'] . ',';
  $sSql .= $oXml['StoryId'] . ',';

 // ..

}

基本上,您使用SimpleXML从XML属性/子节点中提取数据,然后构建一个可以传递给 mysql_query 的字符串。