gpt4 book ai didi

php - 通过xml向mysql数据库插入数据

转载 作者:行者123 更新时间:2023-11-29 08:33:06 26 4
gpt4 key购买 nike

当我使用正常的 xml 树结构将数据插入数据库时​​,数据已成功插入,但是当我尝试使用不同的 xml 结构将数据插入数据库时​​,它没有给我任何错误,但同时创建了字段,但我无法可视化表格中的内容,

<?xml version="1.0"?>
<xml>
<draw>
<candelete>yes</candelete>
<forpayroll>no</forpayroll>
<name>hello</name>
</draw>
</xml>

以上xml格式成功将数据插入mysql数据库

以下 xml 格式不允许我将数据插入 mysql 数据库

<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<STATUS>1</STATUS>
</HEADER>
<BODY>
<DESC>
</DESC>
<DATA>
<TALLYMESSAGE>
<LEDGER NAME="Dena" RESERVEDNAME="" ID="2240" REQNAME="dena">
<PARENT TYPE="String">Bank Accounts</PARENT>
<TAXTYPE TYPE="String">Others</TAXTYPE>
<ISBILLWISEON TYPE="Logical">No</ISBILLWISEON>
<ISCOSTCENTRESON TYPE="Logical">No</ISCOSTCENTRESON>
<ISREVENUE TYPE="Logical">No</ISREVENUE>
<ISDEEMEDPOSITIVE TYPE="Logical">Yes</ISDEEMEDPOSITIVE>
<CANDELETE TYPE="Logical">Yes</CANDELETE>
<FORPAYROLL TYPE="Logical">No</FORPAYROLL>
<MASTERID TYPE="Number"> 2240</MASTERID>
<TNETBALANCE TYPE="Amount">0.00</TNETBALANCE>
<LANGUAGENAME.LIST>
<NAME.LIST TYPE="String">
<NAME>Dena</NAME>
</NAME.LIST>
<LANGUAGEID TYPE="Number">0</LANGUAGEID>
</LANGUAGENAME.LIST>
</LEDGER>
</TALLYMESSAGE>
</DATA>
</BODY>
</ENVELOPE>

下面是我的 php 插入连接代码

<?php

$con = mysql_connect("localhost:3306","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("temp", $con);


if(!$xml=simplexml_load_file('./xml/data.xml')){
trigger_error('Error reading XML file',E_USER_ERROR);
}



foreach ($xml as $syn)
{
$candelete = $syn->candelete;
$forpayroll = $syn->forpayroll;
$name = $syn->name;

$sql = "INSERT INTO vtiger (candelete, forpayroll, name) VALUES ('$candelete','$forpayroll','$name')";
$query = mysql_query($sql);

if (!$query)
{
echo ('Error: ' . mysql_error());
}
else
{
echo "Record added";
}
}
mysql_close($con);
?>

最佳答案

我想让你看看你的foreach循环读取xml:

foreach ($xml as $syn) 
{
$candelete = $syn->candelete;
$forpayroll = $syn->forpayroll;
$name = $syn->name;

正如您在这里看到的,您声明的 xml 节点在新 xml 中完全不同,因此您需要解析文档并获取所有相关数据来构建查询。一个好的方法是在 <TALLYMESSAGE> 之间循环检索所有相关数据并将其存储到可用于新查询的变量中。

您可以使用simplexml_load_file要做到这一点。文档: here

注意您的查询还必须根据新的 xml 进行更改,您将需要一个具有正确架构的新表。

UPDATED

您仍然可以使用相同的方式来解析文件,但是您需要更改脚本,并且最终将需要更多行代码来解析整个新的 xml。正如您所看到的,结构完全不同,有许多子节点,无法通过使用简单的 foreach 来检索,就像您对第一个没有任何子节点的文件所做的那样。这就是为什么你真的应该使用 simplexml_load_file,减少工作量

关于php - 通过xml向mysql数据库插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16008734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com