2015-10-23 6 views
1

Я написал функцию для вставки <IBAN></IBAN> и из базы данных XML в MySQL. Я не могу понять, почему, я не могу вставить данные оттуда в MySQL. Это код, который я написал.INSERT XML DATA TO SQL FIELD

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 .";"); 
       } 




    } 

Код написан на основе кода.

Update (получил ошибку)

Severity: Notice Message : Array to string conversion FIlename : controllers/xmlconverter.php Line Number :368 Unknown column 'Array' in field list' 

Это файл XML я

fkl.fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/… 

И базы данных, конечно, не обновляется с новой строки.

+0

Какова ваша ошибка выхода/текущий результат? –

+0

Пожалуйста, напишите свой XML-вывод или поместите здесь текст вывода, чтобы я мог писать ваш код с нуля. –

+0

@DenizB. ошибка Серьезность: Обратите внимание сообщение: Массив для преобразования строки FileName: Контроллеры/xmlconverter.php Порядковый номер: 368 Неизвестный столбец «Массив» в списке полей» это файл XML я использовал https: //www.fkl .fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/FI_camt_054_sample.xml.xml И база данных ofcourse не обновляется новой строкой. –

ответ

0

Для this образца 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 
+0

Я на самом деле хочу получить xml-файл с рабочего стола вместо URL-адреса. И в какой части я удаляю и вставляю код? –

+0

Я только что изменил свой код, просто используйте его, вы увидите результат. Если вы хотите использовать локальный вывод XML, вы должны изменить '' https: // www.fkl.fi/teemasivut/sepa/tekninen_dokumentaatio/Dokumentit/FI_camt_054_sample.xml.xml'' часть в первой строке. –

+0

Я использую ваш код, но другие столбцы не обновляются, как я хочу. Поскольку у меня больше столбцов, в качестве идентификатора, типа, total_amount, transfer_date, IBAN, BIC, xml_file, number_of_xml_structures, status = 1, ORIG_ID = ID, INSERT_DT = NOW(), UPDATE_DT, поэтому эти столбцы не обновляются. –