2009-06-18 5 views
0

Je suis en train d'analyser XML en utilisant PHP DOM et puis insérez ces données dans des tables MySQL, je suis en utilisant le code suivant pour cela:Problème insertion données analysables XML dans MySQL tabel

<?php 
$xmlDoc = new DOMDocument(); 
$xmlDoc->load("testrtap11.xml"); 
mysql_select_db("zeeshan_database1", $con); 

$x=$xmlDoc->getElementsByTagName('RECORD'); 
$z=$xmlDoc->getElementsByTagName('TITLE'); 
$w=$xmlDoc->getElementsByTagName('PRIMARY_AUTHOR'); 
$y=$xmlDoc->getElementsByTagName('JOURNAL_CONFERENCE'); 

for($i=0; $i<=$x->length-1; $i++) 
{ 
    $sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES('$z->item($i)->nodeValue','$w->item($i)->nodeValue','$y->item($i)->nodeValue')"; 

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

mysql_close($con) 
?> 

Les données saisies est Pas correcte. J'ai même essayé de stocker mes valeurs d'analyse XML dans une variable, puis d'utiliser cette variable pour insérer des données, même cela ne fonctionne pas. J'ai utilisé la variable comme ceci:

for($i=0; $i<=$x->length-1; $i++) 
{ 
    $zz=$z->item($i)->nodeValue); 
    $ww=$w->item($i)->nodeValue); 
    $yy=$y->item($i)->nodeValue); 
    $sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES('$zz','$ww','$yy')"; 

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

Mon xml ressemble à ceci:

<RTAP> 
    <RECORD> 
    <TITLE>    </TITLE> 
    <PRIMARY_AUTHOR>  </PRIMARY_AUTHOR> 
    <JOURNAL_CONFERENCE> </JOURNAL_CONFERENCE> 
    </RECORD> 
</RTAP> 

bien vouloir me aider, que dois-je faire dans ce

Meilleur Zeeshan

+0

Pouvez-vous inclure les données que vous étiez censé stocker et celles qui ont été réellement stockées? –

+0

Avez-vous essayé d'abord de déboguer ou d'imprimer des valeurs? –

Répondre

2

Essayez quelque chose comme ceci:

foreach ($xmlDoc->RECORD as $record) 
{ 
    $sql = 'INSERT INTO Persons (FirstName, LastName, Age) VALUES(' 
     . '"' . mysql_escape_string($record->TITLE->nodeValue) . '", ' 
     . '"' . mysql_escape_string($record->PRIMARY_AUTHOR->nodeValue) . '", ' 
     . '"' . mysql_escape_string($record->JOURNAL_CONFERENCE->nodeValue) . '")' 

    if (!mysql_query($sql,$con)) 
     die('Error: ' . mysql_error()); 

    echo "1 record added"; 
} 

Vous ne dites pas vraiment ce qui ne va pas avec les données qui inséré ...

+0

J'ai essayé d'utiliser la commande select: $ resultat = mysql_query ("SELECT * FROM Persons"); \t while ($ row = mysql_fetch_array ($ result)) { \t \t \t echo $ row [ 'FirstName']. "". $ row ['LastName']; \t \t echo "
"; \t} Et voici la sortie je suis arrivé: (0) -> nodeValue (0) -> nodeValue (1) -> nodeValue (1) -> nodeValue (2) -> nodeValue (2) - > nodeValue (3) -> nodeValue (3) -> nodeValue –

+0

Greg quel est l'enregistrement $ que vous avez mentionné dans votre code? est-il comme $ z-> item ($ i) -> nodeValue que j'utilise dans le mien code. Mais la chose est que votre déclaration ne fonctionne pas pour une raison quelconque - je ne peux pas comprendre .. –

+0

Hey greg merci, votre code a fonctionné après quelques modifications. merci beaucoup. Zeeshan –

0

J'ai essayé d'utiliser la commande select sur mon code d'origine que je l'ai mentionné ci-dessus: $ result = mysql_query (« SELECT * FROM personnes ») ; while ($ row = mysql_fetch_array ($ result)) { echo $ row ['Prénom']. "". $ row ['LastName']; echo "
"; }

Et voici la sortie je suis arrivé: (0) -> nodeValue (0) -> nodeValue (1) -> nodeValue (1) -> nodeValue (2) -> nodeValue (2) -> nodeValue (3) -> nodeValue (3) -> nodeValue

Questions connexes