如何将 XML 中的数据插入数据库 [重复]

Posted

技术标签:

【中文标题】如何将 XML 中的数据插入数据库 [重复]【英文标题】:How can i insert data from an XML into a database [duplicate] 【发布时间】:2015-03-28 14:47:05 【问题描述】:

我想使用 php 将以下 XML 文件插入到 mysql 数据库中

<?xml version="1.0" encoding="UTF-8"?>
<PrintLetterBarcodeData 
    uid="725733706873" 
    name="RAVINDER KUMAR" 
    gender="M" 
    yob="1996" 
    co="S/O KAKA RAM" 
    house="460A" 
    street="WARD NO. 6" 
    lm="NA" 
    loc="NA" 
    vtc="Nanyola (292)" 
    po="Naneola" 
    dist="Ambala" 
    state="Haryana" 
    pc="134003"
/>

如何从这个 XML 文件中提取数据以将它们插入数据库?

【问题讨论】:

可能有用:***.com/questions/15976852/… 您好,我想将此参数插入到表中。 欢迎使用 ***。应该有用***.com/help/how-to-ask ***.com/q/294771/367456 【参考方案1】:

对于 PHP 方法,您会发现以下内容很有用:

<?php
$string = <<<XML
  <PrintLetterBarcodeData 
    uid="725733706873" 
    name="RAVINDER KUMAR" 
    gender="M" 
    yob="1996" 
    co="S/O KAKA RAM" 
    house="460A" 
    street="WARD NO. 6" 
    lm="NA" 
    loc="NA" 
    vtc="Nanyola (292)" 
    po="Naneola" 
    dist="Ambala" 
    state="Haryana" 
    pc="134003"
  />
XML;


$xml = simplexml_load_string($string);
$attribs = $xml->attributes();
// convert the '$attribs' to an array
foreach($attribs as $key=>$val) 
    $arrayOfAttribs[(string)$key] = "'".(string)$val."'";

$namesOfColumns = implode(",", array_keys($arrayOfAttribs));
$valuesOfColumns = implode(",", array_values($arrayOfAttribs));

// your database stuff
$query = "INSERT INTO yourtable ($namesOfColumns) VALUES ($valuesOfColumns);";
?>

【讨论】:

推荐阅读:How can I prevent SQL-injection in PHP? @hakre 确实这是一个相当有趣的话题,但我提供的只是一个简单的“如何做”,没有考虑安全性或性能等任何基本因素。 我也许应该降低一点。这里的 PHP 部分场景需要 mysql 字段名验证。这个网站没有很好地介绍它。另一个问题是关于不使用参数化查询,这将使示例更好恕我直言。您是对的,您不需要在答案中提供该信息。这只是我的评论。

以上是关于如何将 XML 中的数据插入数据库 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何避免插入重复记录?

如何将数据库表中的一个值和 $_POST 中的另一个值插入另一个数据库表[重复]

如何防止将重复数据插入到值为多个的 SQL Server 表中

如何在 C# 控制台应用程序中使用 XmlTextReader 将 XML 数据插入 SQL Server 表?

如何将xml数据插入数据库

如何在插入之前加快重复检查?