使用php将xml数据转换为mysql插入/更新查询

时间:2014-09-03 21:49:17

标签: php mysql xml database simplexml

我正在研究这个项目,它基本上从xml文件中读取数据并将数据插入/更新到mysql数据库中。

以下是sample.xml文件:

<table name="movies">
    <column name="movie_name">Titanic</column>
    <column name="dvd">40</column>
    <column name="blueray">5</column>
    <column name="netflix">4</column>
    <column name="amazon">3</column>
</table>

我将问题分解为: 1)从XML文件中获取值。 2)将提取的值插入mysql数据库。

我能够将值插入数据库,但困难的部分是从xml获取值让我发疯。

这是我的数据库表:

数据库名称:电影 专栏:movie_name,dvd,blueray,netflix,amazon

以下是我尝试从xml中提取属性值的代码。

<?php
$source = 'sample.xml';
// load as string
$xml = new SimpleXMLElement($source,null,true);
$movie_name= $xml->column->attributes()->name;
echo $movie_name. "\n";
?>

输出: 而不是获得电影的名称&#34;泰坦尼克号&#34;,我得到&#34; movie_name&#34;。

3 个答案:

答案 0 :(得分:1)

您正好回复了您所要求的内容。 attributes()查看属性,name为您提供属性的名称。您可以通过这样做获得名称

$movieName = (string)$xml->column;

如果您想要所有值,可以遍历列

foreach($xml->column as $xColumn) {
  $value = (string)$xColumn;
}

答案 1 :(得分:0)

name属性IS movie_name的值。 Titanic是Column元素的值,其name属性具有值。

答案 2 :(得分:0)

您可以使用此查询:

<?php
$source = 'sample.xml';
// load as string
$xml = new SimpleXMLElement($source,null,true);
$movie_name= $xml->column->attributes()->name;

//echo $movie_name. "\n";

$table = $xml->attributes()->name;    

    $columns ="";
    foreach($xml as $column){
        $columns .= (string)$column->attributes()->name .",";
    }
    $columns = rtrim($columns, ",");

    $values ="";
    foreach($xml->column as $value){
        $values .= $value ."," ;
    }
    $values = rtrim($values, ",");

$query = " INSERTO INTO  $table ( $columns ) VALUES ( $values ) ";   

echo $query;

?>