Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将XML数据插入SQL字段_Php_Mysql_Xml_Codeigniter_Xpath - Fatal编程技术网

Php 将XML数据插入SQL字段

Php 将XML数据插入SQL字段,php,mysql,xml,codeigniter,xpath,Php,Mysql,Xml,Codeigniter,Xpath,我编写了一个函数来插入和从XML到MySQL数据库。我不明白为什么,我无法将数据从那里插入MySQL。 这是我写的代码 public function test2(){ $xml = simplexml_load_file('C:\Users\Nihit\Desktop\test.xml') or die ("could not open xml file"); // performing sql query // coun

我编写了一个函数来插入
和从XML到MySQL数据库。我不明白为什么,我无法将数据从那里插入MySQL。 这是我写的代码

public function test2(){
        $xml = simplexml_load_file('C:\Users\Nihit\Desktop\test.xml') or die ("could not open xml file");
               // performing sql query

            // count xml nodes
        $node = $xml->xpath("//IBAN/text()");

        var_dump($node);
        $num = 0;

         $text = $xml->asXML();
         $sql = "INSERT INTO transfer_packet VALUES(null, null, 0, null, " . $node . " , null, '" . mysql_real_escape_string($text) . "', " . $num . ", 1, 0, NOW(), null);";

            $result = mysql_query($sql) or die(mysql_error());

            if (!$result){

                var_dump($result);
                $result = mysql_query("SHOW ERRORS;");
                var_dump($result);

                }else{

             echo 'SUCCESS';
             echo 'updating id...';

             $last_id = mysql_insert_id();


             $result = mysql_query("update transfer_packet set ORIG_ID = " . $last_id . " where ID = " . $last_id .";");
               }




    }
代码是用codeigniter编写的

更新(收到错误) 这是我使用的xml文件

fkl.fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/… 
当然,数据库不会用新行更新。

对于示例XML,您应该使用以下代码:

$xml        =   simplexml_load_file('https://www.fkl.fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/FI_camt_054_sample.xml.xml'); // get XML output

$xmlFile    =   file_get_contents('https://www.fkl.fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/FI_camt_054_sample.xml.xml'); // get XML output as text

$IBAN       =   $xml -> BkToCstmrDbtCdtNtfctn -> Ntfctn -> Acct -> Id -> IBAN; // get IBAN value
$BIC        =   $xml -> BkToCstmrDbtCdtNtfctn -> Ntfctn -> Acct -> Svcr -> FinInstnId -> BIC; // get BIC value

$transferDateTimestamp  =   strtotime($xml -> BkToCstmrDbtCdtNtfctn -> Ntfctn -> CreDtTm); // Get transfer date as timestamp for transferred_date column
$data = array
(
'IBAN'              => $IBAN,
'BIC'               => $BIC,
'INSERT_DT'         =>  time(),
'xml_file'          => $xmlFile,
'status'            =>  '1',
'transferred_date'  =>  $transferDateTimestamp
);
$this -> db -> insert('tableName', $data); // inserting a new row to our table

$id = $this -> db -> insert_id(); // get last inserted id

$uptArray   =   array('ORIG_ID' => $id);
$this -> db -> where('id', $id);
$this -> db -> update('tableName', $uptArray); // updating ORIG_ID column
对于示例XML,应使用以下代码:

$xml        =   simplexml_load_file('https://www.fkl.fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/FI_camt_054_sample.xml.xml'); // get XML output

$xmlFile    =   file_get_contents('https://www.fkl.fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/FI_camt_054_sample.xml.xml'); // get XML output as text

$IBAN       =   $xml -> BkToCstmrDbtCdtNtfctn -> Ntfctn -> Acct -> Id -> IBAN; // get IBAN value
$BIC        =   $xml -> BkToCstmrDbtCdtNtfctn -> Ntfctn -> Acct -> Svcr -> FinInstnId -> BIC; // get BIC value

$transferDateTimestamp  =   strtotime($xml -> BkToCstmrDbtCdtNtfctn -> Ntfctn -> CreDtTm); // Get transfer date as timestamp for transferred_date column
$data = array
(
'IBAN'              => $IBAN,
'BIC'               => $BIC,
'INSERT_DT'         =>  time(),
'xml_file'          => $xmlFile,
'status'            =>  '1',
'transferred_date'  =>  $transferDateTimestamp
);
$this -> db -> insert('tableName', $data); // inserting a new row to our table

$id = $this -> db -> insert_id(); // get last inserted id

$uptArray   =   array('ORIG_ID' => $id);
$this -> db -> where('id', $id);
$this -> db -> update('tableName', $uptArray); // updating ORIG_ID column


您的错误输出/当前结果是什么?请链接您的XML输出或将输出文本放在这里,以便我可以从零开始编写您的代码。@DenizB。错误严重性:注意消息:数组到字符串转换文件名:controllers/xmlconverter.php行号:368字段列表中的未知列“Array”这是我使用的xml文件,当然数据库不会用新行更新。@TimBiegeleisen错误严重性:注意消息:数组到字符串转换文件名:controllers/xmlconverter.php行号:368字段列表中的未知列“Array”这是我使用的xml文件,当然数据库不会用新行更新。您的错误输出/当前结果是什么?请链接您的xml输出或将输出文本放在此处,以便我可以从零开始编写代码。@DenizB。错误严重性:注意消息:数组到字符串转换文件名:controllers/xmlconverter.php行号:368字段列表中的未知列“Array”这是我使用的xml文件,当然数据库不会用新行更新。@TimBiegeleisen错误严重性:注意消息:数组到字符串转换文件名:controllers/xmlconverter.php行号:368字段列表中的未知列“Array”这是我使用的xml文件,当然数据库不会用新行更新。我实际上想从桌面获取xml文件,而不是url。我应该删除并插入你的代码的哪一部分?我刚刚更改了我的代码,只要使用这个你就会看到结果。如果要使用本地XML输出,应更改
'https://www.fkl.fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/FI_camt_054_sample.xml.xml“
part在第一行。我正在使用您的代码,但其他列没有按照我的要求进行更新。因为我有更多的列,比如ID、类型、总金额、转移日期、IBAN、BIC、xml文件、xml结构的数量、状态=1、ORIG\U ID=ID、INSERT\U DT=NOW()、UPDATE\U DT,所以这些列不会被更新。好吧,告诉我所有细节,你的列名是什么,哪个xml标记将发送哪个列?还告诉我,您想插入新行还是更新现有列?我实际上想从桌面获取xml文件,而不是url。我应该删除并插入你的代码的哪一部分?我刚刚更改了我的代码,只要使用这个你就会看到结果。如果要使用本地XML输出,应更改
'https://www.fkl.fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/FI_camt_054_sample.xml.xml“
part在第一行。我正在使用您的代码,但其他列没有按照我的要求进行更新。因为我有更多的列,比如ID、类型、总金额、转移日期、IBAN、BIC、xml文件、xml结构的数量、状态=1、ORIG\U ID=ID、INSERT\U DT=NOW()、UPDATE\U DT,所以这些列不会被更新。好吧,告诉我所有细节,你的列名是什么,哪个xml标记将发送哪个列?还告诉我,要插入新行还是更新现有列?