[WordPress] 配列である MySQL フィールドの更新

スポンサーリンク

Question

私の DB のフィールドのいずれかで 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 ) );

新しい値が配列としてそれを追加するのではなく、以前の値の書き込みを挿入します。

任意のヒントは大歓迎 !

答え

PHP 関数 json_decode の定義を見てください:

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

デコードされた JSON PHP オブジェクトではなく、連想配列として処理するのであなたのケースで

TRUE

に 2 番目のパラメーターを使用する必要があります

特に、あなたのライン:

if( !is_array( $cron_update ) ) $cron_update = array();

json_decode(  $event->cronned, TRUE );

を使用しない場合、すべての時間を実行

希望この役立ちます

Gabriel

http://stackoverflow.com/questions/27089670/updating-mysql-field-that-is-array

スポンサーリンク

Leave a Reply