我有一个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捕获错误,但没有显示
试图将文件直接推送到MySQL中可能会使事情过于复杂。对于一个简单的解决方案,您可以将整个XML文件读取到内存w/file_get_contents中,然后从PHP将其插入MySQL中。
编辑:根据OP要求进行澄清。
好吧,用PHP解析XML文件有很多方法,最简单的方法是SimpleXML。基本上,您希望读取该文件,然后对其进行迭代,从而创建一堆INSERT语句。批处理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的字符串。