我有一个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捕获错误但没有显示
答案 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 的字符串。