2016-03-31 2 views
0

Мне нужно получить данные из этой таблицы в magento sales_flat_quote_payment. В таблице указано поле additional_data.Как получить поле базы данных MySQL с данными между скобками {} в виде массива

В additional_data поле данных в скобках { }

additional data

Вот как выглядит данные отформатированы

a:6:{ 
    s:14:"component_mode"; 
    s:4:"ebay"; 
    s:14:"payment_method"; 
    s:6:"PayPal"; 
    s:16:"channel_order_id"; 
    s:9:"123654789"; 
    s:17:"channel_final_fee"; 
    d:5.3600000000000003; 
    s:12:"transactions"; 
    a:1:{ 
     i:0; 
     a:4:{ 
      s:14:"transaction_id"; 
      s:15:"987456321456987"; 
      s:3:"sum"; 
      d:66.989999999999995; 
      s:3:"fee"; 
      d:1.5700000000000001; 
      s:16:"transaction_date"; 
      s:19:"2016-03-31 02:54:18"; 
      } 
     } 
    s:6:"tax_id"; 
    s:0:""; 
} 

Как я могу получить доступ к этой информации, как массив?

Мне необходимо извлечь из этих данных значение s:3:"fee";d:1.5700000000000001;.

Я пробовал $additional_data->transactions->fee без успеха.

Вот мой код, который я использую.

$con = mysql_connect("localhost","user","password"); 

if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("database", $con); 

$po = $_GET['po']; 


if(! is_numeric($po)) 
    die('invalid PO#'); 

$query1 = "SELECT * FROM `sales_flat_quote` WHERE `reserved_order_id` LIKE '" . $po . "' LIMIT 0 , 30"; 

$get_entity_id = mysql_query($query1); 

while($row = mysql_fetch_array($get_entity_id, MYSQL_ASSOC)) 
{ 
    $entity_id = $row['entity_id']; 

    echo " <div style='margin:30px 0px;'> 
     entity_id: $entity_id<br /> 
    </div> 
    "; 
} 

$query2 = "SELECT * FROM `sales_flat_quote_payment` WHERE `quote_id` = " . $entity_id . " LIMIT 0 , 30"; 

$get_additional_data = mysql_query($query2); 

while($row = mysql_fetch_array($get_additional_data, MYSQL_ASSOC)) 
{ 
    $additional_data = $row['additional_data']; 

    echo " <div style='margin:30px 0px;'> 
     additional_data: $additional_data<br /> 
    </div> 
    "; 
} 

    echo " <div style='margin:30px 0px;'> 
     fee: $additional_data->transactions->fee<br /> 
    </div> 
    "; 

mysql_close($con); 

ОБНОВЛЕНИЕ: Я десериализация массива. Теперь это выглядит так.

array(6) { 

    ["component_mode"]=> string(4) "ebay" 
    ["payment_method"]=> string(6) "PayPal" 
    ["channel_order_id"]=> string(9) "123654789" 
    ["channel_final_fee"]=> float(3.6) 
    ["transactions"]=> array(1) { 
     [0]=> array(4) { 
     ["transaction_id"]=> string(15) "987456321456987" 
     ["sum"]=> float(45) 
     ["fee"]=> float(1.16) 
     ["transaction_date"]=> string(19) "2016-03-31 05:43:43" 
     } 
    } 
    ["tax_id"]=> string(0) "" 
} 

У меня по-прежнему возникают проблемы с извлечением данных из этого массива.

Я хочу получить $additional_data->transactions->fee.

Как я могу это сделать?

+0

не то, что сериализованная массив? просто unserialize – Ghost

+0

Хорошо спасибо. Я начну там. – Mike

+0

Я неэтериализовал его. Пожалуйста, прочитайте мое обновление выше. Я все еще не могу получить нужные данные. – Mike

ответ

2

Это похоже на сериализованный массив. См unserialize() php doc

Плата может быть получен с: $additional_data['transactions'][0]["fee"]

+0

Хорошо хорошо. Я отказался от нее и обновил сообщение о том, как массив выглядит неэтериализованным. Как я могу получить данные, которые я хочу сейчас. Пожалуйста, прочитайте мое обновление выше. – Mike

+0

Поскольку поле платы является первым ключом массива транзакций, вы можете получить к нему доступ с помощью $ дополнительных_данных ['transaction'] [0] ["fee"] – SiCK

+0

Я обратился к нему так: $ tags = $ Дополнительные_данные ['transaction'] [0]; $ теги [плата] ' – Mike

 Смежные вопросы

  • Нет связанных вопросов^_^