更新作为数组的MySQL字段

时间:2014-11-23 13:52:19

标签: php mysql arrays json wordpress

我使用json_encode将数据存储在我的一个数据库字段中作为数组。数据按预期存储,一旦我使用

运行json_decode,我就可以检索和查询数组
if ( array_key_exists( 'my_key', json_decode( $mydb->field ) ) ) ...

我现在要做的是通过添加额外的$ key =>来更新此数组; $ value,但我不能为我的生活做好准备!

我目前正在使用......

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 ) );

它将新值作为数组插入,但是先写入以前的值而不是添加它。

任何提示赞赏!

1 个答案:

答案 0 :(得分: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 );

时,

会一直执行

希望这有帮助。

加布里埃尔