web-dev-qa-db-fra.com

Comment remplacer des valeurs dans Wordpress DB en utilisant phpMyAdmin

J'essaie de sauvegarder une valeur dans une ligne/un champ cg_option à l'aide de phpmyadmin. Cependant, les données ne sont pas stockées correctement et, une fois chargées après la sauvegarde, seule une partie des données apparaît. Dois-je utiliser une fonction de conversion dans phpmyadmin?

La ligne est theme_mods_ [nom-thème]

Voici un échantillon de données contenues dans le champ:

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

Les données sont sérialisées.

Pour le modifier, vous devez le désérialiser, le modifier, puis le sérialiser à nouveau et le sauvegarder.

Vous pouvez le faire avec PHP.

Vérifier sérialiser et désérialiser .

Vous pouvez également vérifier cet outil: serializededitor.com

En fonction de votre configuration, la mise en cache peut ne pas être prise en compte lors de l'accès direct à la base de données.

Vous est-il possible d'exécuter set_theme_mod avec la nouvelle valeur - via votre fichier functions.php par exemple?

1
Welcher

J'ai pu coller une entrée de base de données sérialisée "brisée" dans cet outil en ligne:
https://itask.software/tools/serialization-fixer.php

  1. Collez une chaîne de sérialisation brisée dans la boîte.
  2. Cliquez sur "Fix". Il compte les caractères pour vous et affiche la version corrigée dans la case ci-dessous.
  3. Copiez-collez la version corrigée dans la table de base de données pour la corriger.

Dans mon cas, j'avais directement édité du texte sérialisé, ce qui cassait le nombre de caractères, et pour une raison quelconque, j'avais du mal à obtenir le nombre correctement à la main.
L'outil en ligne a correctement compté les caractères et mis à jour la chaîne de sérialisation pour moi.

Un autre outil en ligne utile que j'ai trouvé montre la PHP version non sérialisée de la chaîne, qui est Nice.
Mais ce que j’ai trouvé utile pour les tests, c’est qu’il affiche un message d’erreur au-dessus de la sortie non sérialisée ci-dessus, si le nombre de caractères est incorrect.
Si aucun message ne s'affiche, votre chaîne sérialisée est (probablement) correcte.
http://unserialize.onlinephpfunctions.com/

0
SherylHohman