Проблема вставки разобранных данных XML в MySQL tabel - PullRequest
0 голосов
/ 18 июня 2009

Я пытаюсь проанализировать XML с помощью PHP DOM и затем вставить эти данные в таблицы MySQL, для этого я использую следующий код:

<?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)
?>

Введенные данные неверны. Я даже попытался сохранить мои значения синтаксического анализа XML в переменной, а затем использовать эту переменную для вставки данных, даже это не работает. Я использовал переменную, как это:

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";
}

Мой xml выглядит так:

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

Пожалуйста, помогите мне, что мне делать в этом

Лучший Zeeshan

Ответы [ 2 ]

2 голосов
/ 18 июня 2009

Попробуйте что-то вроде этого:

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";
}

Вы на самом деле не говорите, что не так с вставленными данными ...

0 голосов
/ 18 июня 2009

Я попытался использовать команду выбора в моем исходном коде, который я упоминал выше: $ result = mysql_query ("SELECT * FROM Persons"); while ($ row = mysql_fetch_array ($ result)) { echo $ row ['FirstName']. "" $ Строки [ 'ЬазШате']; echo "
"; }

И это результат, который я получил: (0) -> nodeValue (0) -> nodeValue (1) -> nodeValue (1) -> nodeValue (2) -> nodeValue (2) -> nodeValue (3) -> nodeValue (3) -> nodeValue

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...