2012-02-04 107 views
0

我有,我想,如果試圖用下面的代碼,但它不是在datataseLOAD DATA LOCAL INFILE

$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文件中的數據插入到數據庫

一個XML文件是存儲在XML文件名

我試圖通過mysql_error捕捉錯誤,但沒有露面

變量

回答

1

它看起來像您可以通過爲tr事情過於複雜ying將文件直接推送到MySQL中。對於簡單的解決方案,您可以將整個XML文件讀取到內存中,然後將其從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

+0

可以請你告訴我該怎麼做,這是一個初學者 – Manoj 2012-02-04 07:53:17

+0

我試過但沒有得到任何東西 – Manoj 2012-02-04 08:15:01

+0

看看[這個例子](http://us.php.net/manual/en/simplexml.examples-basic .php),它們向您展示瞭如何使用SimpleXMLElement訪問XML文檔並獲取各種節點的屬性。所有你需要做的就是將它應用到你的文檔中,然後一旦你有來自一個節點的變量的字段,把它們放到一個SQL語句中(以一個字符串),最後爲文檔中需要關聯的每個節點發出INSERT到一個新的數據庫條目。 – quickshiftin 2012-02-04 16:42:46