views:

1452

answers:

4

I have a multidimensional array in PHP like this:

$array = array(
    "Part1" => array(
        "Subpart1" => array(0, 1),
        "Subpart2" => array(1, 0)
    ),
    "Part2" => array(0),
    "Part3" => array(0, 1, 0)
);

Now I want to store this array in a MySQL table and retrieve it exactly like this again on another PHP page.

I've been trying using serialize() and unserialize()

$array= serialize($array);

and then on the other page

$array= $row['Array'];
$array2 = array();
$array2 = unserialize($array);

But I seem to do something wrong, in the beginning I got a var_dump of bool(false) and now I get a var_dump of NULL.

+7  A: 

Your code looks ok...

One thing that can catch you out is if your column is too small - if you use VARCHAR(255) your data can be truncated and won't unserialize. If you add the value of $row['Array'] I could see if it's whole.

Greg
I feel so incredibly stupid right now .. You sir, are my god !
Pmarcoen
Heh I only know about this 'cause I've done it myself... more than once!
Greg
+3  A: 

Use column type TEXT. Serialized data often doesn't fit VARCHAR(255).

Jet
Ups... the same Greg said )...
Jet
A: 

You could use json encode, json_encode($array) and you will get a string value in json notation so you can store in database, and retrive and do a json_decode($string, true) so you cand convert in an array again. If you don't pass the true argument to the json_decode, it will converted to a stdClass.

A: 

Hi all,

Particulars Quantity Rate Amount Amount Sum       Others      Others Amount                        Tax            Total                         

This is my table in php/html. I need to store and retrieve the php Particulars(p),Quantity(q),Rate(r) as a separate table format