web-dev-qa-db-ja.com

PhpMyAdminを使用してWordpress DBの値を置き換える方法

Phpmyadminを使用してcg_optionの行/フィールドに値を保存しようとしていますが、データが正しく保存されておらず、保存後に再度ロードすると、データの一部しか表示されません。 phpmyadmin内で変換関数を使用する必要がありますか?

行はtheme_mods_ [テーマ名]です。

これは、フィールドに含まれているデータのサンプルです。

s:19:"thim_my_text_option" s:0:"" s:30:"thim_display_login_menu_mobile" b:0 s:25:"thim_body_secondary_color" s:7:"#4caf50" s:24:"thim_remove_query_string" b:0 s:21:"thim_google_analytics"

1
Riccardo

データはシリアル化されています。

それを編集するためには、それをアンシリアライズし、編集し、そして再度シリアライズし、そして保存する必要があります。

あなたはPHPでそれをすることができます。

シリアライズ および シリアライズ解除 を確認してください。

あなたは同様にこのツールをチェックすることができます: serializededitor.com

設定によっては、データベースに直接アクセスするときに考慮されないキャッシュがある場合があります。

あなたの代わりに新しい値でset_theme_modを実行することは可能ですか?例えば、あなたのfunctions.phpファイルを通して。

1
Welcher

私はこのオンラインツールに "壊れた"シリアル化されたデータベースエントリを貼り付けることができました。
https://itask.software/tools/serialization-fixer.php

  1. 壊れたシリアル化文字列をボックスに貼り付けます。
  2. 「修正」をクリックしてください。それはあなたのために文字数を数え、下のボックスに修正版を出力します。
  3. 修正するバージョンをデータベーステーブルにコピーアンドペーストしてください。

私の場合、シリアル化されたテキストを直接編集していたために文字数が壊れていましたが、何らかの理由でその数を手動で正しく取得するのが困難でした。
オンラインツールで文字が正しくカウントされ、シリアル化文字列が更新されました。

私が見つけたもう一つの便利なオンラインツールは文字列のPHPシリアライズされていないバージョンを示しています、これはいいです。
しかし、私がテストに役立つとわかったのは、文字数が間違っている場合に、シリアル化されていない出力の上にエラーメッセージが表示されることです。
メッセージが表示されない場合、シリアル化された文字列は(おそらく)正しいです。
http://unserialize.onlinephpfunctions.com/

0
SherylHohman