我使用SimpleXML从需要身份验证的源获取XML数据。使用cURL我已经能够取回结果。但是,当我试图将数据导入MySQL数据库时,没有插入任何内容。
现在我认为是因为我没有对XML数据做过些什么。但是,我是XML数据的新手,并且一直使用数据库的东西,所以可以提供一些帮助。
我环顾四周,我可能会在这里复制另一个问题,但我的困惑在于我所看到的。如果我能弄清楚"为什么",我将进入"怎么"!
以下是我得到的输出:
SimpleXMLElement Object
(
[bookingDataResponse] => SimpleXMLElement Object
(
[bookingDataResult] => <Bookings><SupplierCode>ABCD</SupplierCode><ServiceName>Service 1</ServiceName><UnitCode>ABC123</UnitCode></Bookings><Bookings><SupplierCode>XYZ</SupplierCode><ServiceName>Service 2</ServiceName><UnitCode>XYZ123</UnitCode></Bookings>
)
)
我认为我需要转换上面的结果,然后将数据插入到数据库中。然而,这就是我被困住的地方。
我将使用PDO和foreach将数据导入数据库,但是到达那一点的任何帮助都是非常有用的人。
干杯
UPDATE @ 11:18GMT: 此更新涵盖了我编码的数据库插入:
$servername = "xxx.xxx.xxx.xxx";
$username = "username";
$password = "password";
$dbname = "myDatabase";
$db_cstr = "mysql:host=" . $servername . "; dbname=" . $dbname;
$conn=new PDO($db_cstr, $username,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
foreach ($parser->bookingDataResponse->bookingDataResult->Bookings as $row)
{
$SupplierCode = ($row->SupplierCode);
$UnitCode = ($row->UnitCode);
$stmt = $conn->prepare("INSERT INTO `bookingData` (`SupplierCode`, 'UnitCode') VALUES (?,?)");
$stmt->execute(array($SupplierCode,$UnitCode));
}