Читать и писать массив PHP в MYSQL - PullRequest
3 голосов
/ 14 марта 2012

Я хочу сохранить ассоциативный массив PHP из переменной PHP в базе данных MYSQL, а затем получить доступ к сохраненному значению (в базе данных MYSQL) и использовать его в PHP в качестве ассоциативного массива.

$arr = array("abc"=>"ss","aaa"=>"ddd");

Теперь я хочу сохранить

array("abc"=>"ss","aaa"=>"ddd");

в базу данных и снова хотите получить ее и присвоить переменной.

Я пытался использовать функцию serialize, но она сохранила только слово «Массив» в базе данных.

Ответы [ 2 ]

11 голосов
/ 14 марта 2012

Один из способов сделать это - сериализовать его в строку перед вставкой, а затем десериализовать в массив после выборки. Есть разные способы сделать это, но если ваши массивы просты, JSON является приемлемым форматом сериализации.

Вы можете json_encode в пути:

$str = json_encode($arr);
// Insert $str into db

Затем json_decode , позже:

// Got $str from db
$arr = json_decode($str);

Другим методом является сериализация :

$str = serialize($arr);
// Insert $str into db

и десериализация :

// Got $str from db
$arr = unserialize($str);

Это даст больше возможностей для сериализации, чем json_encode и json_decode, но будет сложнее проверить базу данных вручную, чтобы увидеть, что там.

Таким образом, оба метода имеют свои преимущества и недостатки. Существуют и другие форматы сериализации / маршала.

1 голос
/ 14 марта 2012

Как сказал Бен, вам нужно сериализовать ваш массив перед его сохранением в базе данных, а затем десериализовать его, когда вы прочитаете его обратно. Если 'Array' записывается в вашу базу данных, вы, вероятно, не сохраняете результаты serialize () в записываемой вами переменной.

<?php

function store()
{
    $arr = array("abc"=>"ss","aaa"=>"ddd");

    $serialized = serialize($arr);

    // Store $serialized to the database
}

function retrieve()
{
    // Retrieve $serialized from the database

    $arr = unserialize($serialized);
}
...