У меня проблема, если я получу запись из базы данных, она вернется в виде строки. Но я не хочу этого, потому что это должен быть массив:
var_dump($data)
возвращается
string(654) "Array ( [0] => Array ( [1] => 17-6-2015 [2] => Livingwater TEST [3] => J. Luttik [4] => E. Luttik [5] => Annemarie, Rosy [id] => 7 ) [1] => Array ( [1] => 21-6-2015 [2] => Celebration [3] => P. Brenner [4] => B. Nobbe [5] => Heleen, Laurens [id] => 8 ) [2] => Array ( [1] => 24-6-2015 [2] => Celebration [3] => C. Visser [4] => E. Luttik [5] => Annet, Elsemijn [id] => 9 ) ) "
Как я могу это исправить?
Я думаю, что у меня есть, это неправильно хранится в базе данных. Должен храниться как json_encode($data)
и получил как json_decode($data, true)
,
Но другой способ — сохранить его как serialize($data)
и получить его с unserialize($data)
Хорошо, очевидный факт, что сохраненные данные хранятся неправильно! Чтобы преобразовать эту строку в массив, вам нужно сделать больше, чем просто сохранить ее правильно.
Таким образом, решение может быть от @sanderbee: Преобразование var_dump массива обратно в переменную массива
Или мое предлагаемое решение будет хранить их правильно.
Данные являются массивом, поэтому это означает, что данные могут быть многократными. Либо вы сохраняете ее как сериализованную строку, так что вы можете просто отменить ее сериализацию, либо я думаю, что лучшим решением будет 1-N отношение внутри базы данных, как:
Таблица: Люди
Ряды:
Таблица: Домашние животные
Так 1 (ОДИН) Человек может иметь N (0 до бесконечности) Домашние питомцы.
Таблица: человек
Таблица: Домашние животные
Так что у Джорджа Буша есть 3 домашних питомца: собака, кошка и дельфин. У Барака Обамы просто есть путин как домашнее животное.
Таким образом, вы можете легко получить все данные с помощью одного SQL-запроса с помощью оператора JOIN.
$db->query( 'SELECT Human.Name, Pets.race FROM Human JOIN Pets ON ( Human.id = Pets.Human_ID ) ' );
Выглядит гораздо больше усилий, чем десериализация? Но намного чище, и если у вас много данных, база данных будет намного быстрее, чем … или так и должно быть … и еще чище. Выглядит более профессионально для меня.
редактировать
Ваш профиль выглядит так, как будто ваш опыт должен быть достаточным, чтобы знать это уже. Возможно ли, что вы «ДОЛЖНЫ» использовать эти записи в базе данных? Если это так, то самый первый вариант от Sanderbee является «должен сделать» ..
я хотел бы использовать сериализации сохранить информацию в БД и десериализации чтобы восстановить это к чему-то полезному. Я считаю, что это лучший способ сделать это. Вы также можете использовать json_encode и json_decode, но я предпочитаю [un] serialize