gpt4 book ai didi

php - 如果 xsi :nil = true (XML) 如何返回 NULL

转载 作者:行者123 更新时间:2023-11-28 23:10:39 25 4
gpt4 key购买 nike

我在解析 XML 文件时遇到问题。当 xsi:nil = true 时,我想在我的 SQL 表中返回 NULL。这是 XML 文件的示例:

<row>
<data>blablabla</data>
</row>
<row>
<date xsi:nil="true" />
</row>

一些 date 是空的,应该在我的 PHP foreach 循环中返回 NULL。但是我认为它们返回 "" 因为我的 SQL 循环无法读取数据。

这是我的 PHP 代码示例:

foreach ($xml->xpath('//row') as $row) {
$date= $row->xpath('./date');
$item['date'] = $date[0];
echo $item['date'].'<br/>';

// insert the result in my SQL database //
$sql = $sq_connexion->prepare("INSERT INTO my_table (date) VALUES (:date)");
$sql->execute(array('date' => $item['date']));

}

我希望在我的 SQL 数据库中,第一个 date 的值 blablabla 时的值 NULL显示 xsi:nil="true"。目前,使用这种代码,我会收到以下错误消息:

 PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '' for column 'date' at row 1

最佳答案

测试属性的问题在于您需要获取特定命名空间的属性。因此,具有该属性的测试看起来略有不同。我已经添加了一些测试数据,但无法使用数据库位对其进行测试,所以希望这能奏效...

<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );

$data = "<set xmlns:xsi='http://someurl.com'>
<row>
<date>0000-00-00</date>
</row>
<row>
<date xsi:nil=\"true\" />
</row>
</set>";

$xml = new SimpleXMLElement($data);
foreach ($xml->xpath('//row') as $row) {
$date = $row->date;
if ( isset( $date->attributes('xsi', true)->nil )) {
$date = null;
}

// insert the result in my SQL database //
$sql = $sq_connexion->prepare("INSERT INTO my_table (date) VALUES (:date)");
$sql->execute(array('date' => $date));
}

关于php - 如果 xsi :nil = true (XML) 如何返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46120012/

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