2014-11-23 5 views
0

У меня есть данные, хранящиеся в одном из моих полей БД в виде массива с использованием json_encode. Данные сохраняются, как и ожидалось, и я могу получить и запросить массив, как только я побежал json_decode с помощьюОбновление поля MySQL, которое является массивом

if (array_key_exists('my_key', json_decode($mydb->field))) ... 

То, что я сейчас пытаюсь сделать, это обновление этот массив, добавив еще $ ключ => $ значение, но Я не могу для жизни понять это!

настоящее время я использую ...

if($event->cronned != '') { 
         $cron_update = json_decode($event->cronned); 
        } 
        if(!is_array($cron_update)) $cron_update = array(); 
        $cron_update[$mdjm_schedules['balance-reminder']['slug']] = time(); 
        $update_args = array(
           'last_updated_by' => '0', 
           'last_updated' => date('Y-m-d H:i:s'), 
           'cronned'  => json_encode($cron_update), 
           ); 
        $update_enquiry = $wpdb->update($db_tbl, $update_args, array('event_id' => $event->event_id)); 

Он вставляет новое значение как массив, но перезапись предыдущие значения, а не добавлять к нему.

Любые советы оценены!

ответ

0

Посмотрите на определение для функции PHP json_decode:

mixed json_decode (string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]])

Вы должны использовать второй параметр TRUE в вашем случае, потому что вы регулируете декодированного JSON как ассоциативный массив, а не объект PHP ,

В частности, ваша линия: if(!is_array($cron_update)) $cron_update = array();

выполнит все время, когда вы не используете json_decode( $event->cronned, TRUE);

Надеются, что это помогает.

Gabriel

+0

Не могу поверить, что я пропустил это ... смотрел на него слишком долго, очевидно! Спасибо! – Mike

Смежные вопросы