2012-01-10 314 views
-5

我想解析一個xml文件並將其插入到mysql數據庫中。 xml文件(syntest.xml)看起來是這樣的:解析xml文件並插入到mysql數據庫

<synonyms> 
<syn level="4.0"><w1>LP</w1><w2>vinylskiva</w2></syn> 
<syn level="3.7"><w1>OK</w1><w2>javisst</w2></syn> 
<syn level="4.6"><w1>OS</w1><w2>operativsystem</w2></syn> 
</synonyms> 

我一直在使用使用simplexml_load_file解析xml文件,當我使用一個foreach循環在瀏覽器打印的記錄循環遍歷所有的記錄和everyting看起來不錯。但是,當我嘗試將數據插入到數據庫中時,循環不會迭代,只會插入一條記錄。

的代碼看起來是這樣的:

<?php 

$con = mysql_connect("localhost","user","username"); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("db_name", $con); 


if(!$xml=simplexml_load_file('syntest.xml')){ 
trigger_error('Error reading XML file',E_USER_ERROR); 
} 



foreach ($xml as $syn) { 
$w1 = $syn->w1; 
$w2 = $syn->w2;  
} 

$sql="INSERT INTO db_name (w2, w1) 
VALUES 
('$w1','$w2')"; 

if (!mysql_query($sql,$con)) 
{ 
die('Error: ' . mysql_error()); 
} 
echo "Records added"; 

mysql_close($con) 
?>  

所有幫助非常感謝!

+0

是太簡單 - 你必須在循環 – SergeS 2012-01-10 18:34:23

+2

插入記錄http://stackoverflow.com/questions/8582837/可能是有用的 – newtover 2012-01-10 18:38:51

+0

好,謝謝,我怎麼插入循環中的記錄?我對PHP很陌生,所以如果你能告訴我正確的php,我會非常感激! – user1009453 2012-01-10 19:15:24

回答

2

mysql_query的位置不正確。您必須在循環中插入記錄:

foreach ($xml as $syn) 
{ 
    $w1 = $syn->w1; 
    $w2 = $syn->w2; 

    $sql = "INSERT INTO db_name (w1, w2) VALUES ('$w1','$w2')"; 
    $query = mysql_query($sql); 

    if (!$query) 
    { 
     echo ('Error: ' . mysql_error()); 
    } 
    else 
    { 
     echo "Record added"; 
    } 
} 
mysql_close($con); 
+0

呵呵?這並沒有太大的改變,因爲你在循環之後調用mysql_query – SergeS 2012-01-10 18:35:36

+0

謝謝你的回答,但正如SergeS所說,對我來說這並沒有太大的改變。仍然只有一條記錄被添加到數據庫。有什麼建議麼? – user1009453 2012-01-10 19:31:30

+0

我更改了代碼,請重試。 – 2012-01-10 20:08:55

相關問題