2016-09-07 3 views
1

У меня есть некоторые пользовательские настройки, которые я сохраняю в массиве в MySQL. Это, как я получить текущий массив:Добавить в mysql array

$array = DB::queryFirstField("SELECT dashboard_array FROM compel_dashboard 
              WHERE user_id = %i", $user_id); 

Который дает мне:

"s:19:"dashboard-reccomend";" 

Теперь, если я хочу, чтобы добавить новую строку ($dashboard_item содержит строку, как приборная панель-прогресса) в массив I думал:

$array[] = serialize($dashboard_item); 

    $query = DB::update('compel_dashboard', array(
        'dashboard_array' => $array 
       ), "user_id=%s", $user_id); 

Когда я делаю этот звонок, хотя он не обновляется. Массив остается таким же, как мой первый вызов, ничего не добавляется. Если я просто обновляю это поле dashboard_array, не пытаясь добавить его в массив, он заменяет значение «отлично», поэтому я знаю его что-то, что я делаю, добавляя в массив.

+0

Должно ли $ array быть строкой, а не массивом, чтобы обновить поле dashboard_array правильно? – vincenth

+0

@ vincenth Я понял. Ниже приводится описание, если вы хотите проверить это. – Packy

ответ

0

Это то, что я сделал, чтобы заставить его работать. Я должен был неэтериализовать массив, прежде чем добавлять к нему.

 $dashboard = DB::queryFirstField("SELECT dashboard_array FROM compel_dashboard 
             WHERE user_id = %i", $user_id); 

     $array[] = unserialize($dashboard); 

     array_push($array, $dashboard_item); 

     $new_dash = serialize($array); 

     $query = DB::update('compel_dashboard', array(
         'dashboard_array' => $new_dash 
        ), "user_id=%s", $user_id);