2016-03-31 7 views
0

Ich muss Daten aus dieser Tabelle in Magento sales_flat_quote_payment abrufen. In der Tabelle befindet sich ein Feld mit der Bezeichnung additional_data.So rufen Sie ein MySQL-Datenbankfeld mit Daten in Klammern {} als Array ab

Im additional_data Feld Daten in Klammern { }

additional data

Hier ist, wie die Daten formatiert sieht

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:""; 
} 

Wie könnte ich diese Daten wie ein Array zugreifen?

Ich muss speziell aus diesen Daten s:3:"fee"; Wert von d:1.5700000000000001; Wert zu extrahieren.

Ich versuchte $additional_data->transactions->fee ohne Erfolg.

Hier ist mein Code, den ich benutze.

$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); 

AKTUALISIERUNG: deserialisiert I der Anordnung. Jetzt sieht es so aus.

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

Ich habe immer noch Probleme beim Abrufen der Daten, die ich von diesem Array will.

Ich möchte $additional_data->transactions->fee abrufen.

Wie kann ich das tun?

+0

ist das nicht eine serialisierte Array? einfach unserialisieren – Ghost

+0

Ok danke. Ich werde dort anfangen. – Mike

+0

Ich habe es unsialisiert. Bitte lies mein Update oben. Ich kann die gewünschten Daten immer noch nicht abrufen. – Mike

Antwort

2

Es sieht wie ein serialisiertes Array aus. Siehe unserialize() php doc

Die Gebühr kann wie folgt erhalten werden: $additional_data['transactions'][0]["fee"]

+0

Ok gut. Ich habe es entserialisiert und meinen Post mit dem Aussehen unseres Arrays aktualisiert. Wie würde ich jetzt die Daten abrufen, die ich möchte? Bitte lies mein Update oben. – Mike

+0

Da das Gebührenfeld der erste Schlüssel des Transaktionsarrays ist, können Sie mit $ additional_data ['transactions'] [0] ["fee"] darauf zugreifen – SiCK

+0

Ich habe es wie folgt aufgerufen: $ tags = $ additional_data ['transactions'] [0]; $ tags [Gebühr] ' – Mike