0

私はxmlファイルを受信して​​いるローカルサーバーを持っています。xml ファイルは正常に受信されますが、XML ファイルをデータベースに渡す方法に問題があります。

私はそのように単純なxmlファイルを取得します:

$xml_post = file_get_contents('php://input');

私が受け取るxmlファイルは次のようになります:

<city>
<id>1081</id>
<name>athens</name>
<country>Greece</country>
<info>etc etc etc</info>
</city>

すべてを正しく保存できるように、まったく同じノードでphpmyadminを使用してデータベースを手動で作成しました。

ここで、mysql_query を使用してデータベースに取得したものを挿入したいと考えています。このようなもの :

mysql_query("INSERT INTO cities (id, city ,country , info)
  VALUES (4 , 'athens' , 'greece' , 'etc etc etc'");

しかし、上記のステートメントで値として使用するためにxmlに保存した変数はどれですか? すべてのノードを変数に格納してデータベースに正しく渡す必要があるxmlファイルを解析するにはどうすればよいですか?

4

2 に答える 2

2

simplexml_load_string()を使用してみてください

使用例:

<?php
$xml = '<city>
<id>1081</id>
<name>athens</name>
<country>Greece</country>
<info>etc etc etc</info>
</city>
';

$xml = simplexml_load_string($xml);
//1081
echo $xml->id;
//athens
echo $xml->name;
?>

XML 内に複数のノードがある場合、各ノードはオブジェクトの配列になります。

$xml = '
<citys>
    <city>
        <id>1081</id>
        <name>athens</name>
        <country>Greece</country>
        <info>etc etc etc</info>
    </city>
    <city>
        <id>1082</id>
        <name>somwhere else</name>
        <country>Spain</country>
        <info>etc etc etc</info>
    </city>

</citys>
';

$xml = simplexml_load_string($xml);
//print_r($xml);

foreach($xml->city as $val){
    echo $val->name;
}

//or
echo $xml->city[0]->name;
//athens
echo $xml->city[1]->name;
于 2013-01-14T21:21:43.353 に答える
1

XML を PHP で読み取り可能なデータに解析し、そのデータを SQL 挿入で使用する必要があります。

PHP SimpleXML チュートリアルは、開始する場所かもしれません。

于 2013-01-14T21:22:03.900 に答える