【问题标题】:importing XML into MySQL with PHP only getting first child data使用 PHP 将 XML 导入 MySQL 仅获取第一个子数据
【发布时间】:2017-11-03 02:41:43
【问题描述】:

经过反复试验,我终于有了将 XML 数据导入 MySQL 的 PHP 代码。唯一的问题,它只从第一个子节点获取数据。

我的 XML 数据是这样构造的;

<Machine>
    <Stem>
        <Log>
            <ProductKey>1713</ProductKey>
            <LogVolume logVolumeCategory="m3sub" logMeasurementCategory="Machine">0.5682</LogVolume>
            <LogMeasurement logMeasurementCategory="Machine">
                <LogLength>551</LogLength>
            </LogMeasurement>
         </Log>
        <Log>
            <ProductKey>1713</ProductKey>
            <LogVolume logVolumeCategory="m3sub" logMeasurementCategory="Machine">0.5682</LogVolume>
            <LogMeasurement logMeasurementCategory="Machine">
                <LogLength>551</LogLength>
            </LogMeasurement>
         </Log>
        <Log>
            <ProductKey>1713</ProductKey>
            <LogVolume logVolumeCategory="m3sub" logMeasurementCategory="Machine">0.5682</LogVolume>
            <LogMeasurement logMeasurementCategory="Machine">
                <LogLength>551</LogLength>
            </LogMeasurement>
         </Log>
    </Stem>
    <Stem>
        <Log>
            <ProductKey>1713</ProductKey>
            <LogVolume logVolumeCategory="m3sub" logMeasurementCategory="Machine">0.5682</LogVolume>
            <LogMeasurement logMeasurementCategory="Machine">
                <LogLength>551</LogLength>
            </LogMeasurement>
         </Log>
        <Log>
            <ProductKey>1713</ProductKey>
            <LogVolume logVolumeCategory="m3sub" logMeasurementCategory="Machine">0.5682</LogVolume>
            <LogMeasurement logMeasurementCategory="Machine">
                <LogLength>551</LogLength>
            </LogMeasurement>
         </Log>
        <Log>
            <ProductKey>1713</ProductKey>
            <LogVolume logVolumeCategory="m3sub" logMeasurementCategory="Machine">0.5682</LogVolume>
            <LogMeasurement logMeasurementCategory="Machine">
                <LogLength>551</LogLength>
            </LogMeasurement>
         </Log>
    </Stem>
</Machine>

PHP;

foreach($data->Stem as $Stem)
    {
        $statement->execute(
            array(
            ':productkey'    => $Stem->SingleTreeProcessedStem->Log->ProductKey,
            ':logvolume'     => $Stem->SingleTreeProcessedStem->Log->LogVolume[1],
            ':loglength'     => $Stem->SingleTreeProcessedStem->Log->LogMeasurement->LogLength
            )
        );

    }

目前,这是遍历所有 Stem 标签并获取第一个 Log 标签的信息。 我需要它从所有日志标签中获取信息。 我试图重写我的 foreach 语句,但是我对此仍然很陌生,所以我希望有人能够告诉我哪里出错了?

【问题讨论】:

    标签: php mysql xml


    【解决方案1】:

    您还需要一个foreach 循环:

    foreach($data->Stem as $Stem)
    {
        foreach($Stem->Log as $Log) {
            $statement->execute(
                array(
                    ':productkey'    => $Stem->SingleTreeProcessedStem->Log->ProductKey,
                    ':logvolume'     => $Stem->SingleTreeProcessedStem->Log->LogVolume[1],
                    ':loglength'     => $Stem->SingleTreeProcessedStem->Log->LogMeasurement->LogLength
                )
            );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      相关资源
      最近更新 更多