Remplacer des caractères sur une table sérialisée

Ici un cas concret sous Prestashop.

Ce code permet de changer tous les http en https sur tous les contenus :

<?php
require(dirname(__FILE__) . '/config/config.inc.php');

    $aData = Db::getInstance()->executeS('
SELECT id,content
FROM ' . _DB_PREFIX_ . 'matable
');

function replacePNJ($value) {
    $value = str_replace('http://www', 'https://www', $value);

    return $value;
}


function buildTree(array $elements, $parentId = 0) {
    $branch = array();
    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }

            $element['content'] = replacePNJ($element['content']);
            $branch[] = $element;
        }

    }
    return $branch;
}


foreach ($aData as $value) {
   $dataTmp = unserialize($value['content']);
    $dataTmp = buildTree($dataTmp);

   $data = serialize($dataTmp);

   Db::getInstance()->execute('UPDATE ' . _DB_PREFIX_ . 'matable SET `content`="' . pSQL($data, true) . '" WHERE id='.$value['id_belvg_productattabs']);
}

 

 

Magento : Problème lors du process d’indexation sur les produits de la catégorie

Le problème est survenu lors d’un import/export de produit de la préproduction vers la production.
Avec l’erreur suivante dans les exceptions :

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`MABASE`.`catalog_category_product_index`, CONSTRAINT `FK_CAT_CTGR_PRD_IDX_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`category_id`) REFERENCES `catalog_category_entity` (`en)

Le problème vient d’une catégorie qui n’existait plus. Pour résoudre le bug, il suffit d’exécuter la requête suivante :


SELECT * FROM catalog_category_product
WHERE category_id NOT IN
( SELECT entity_id FROM catalog_category_entity )

Cette requête permet d’extraire toutes les lignes qui concernent une catégorie qui n’existe plus.
Il suffit de supprimer toutes ces lignes et de lancer la réindexation en administration Magento.

exportation de wordpress BDD

requête d’exportation :

UPDATE wp_blc_links SET url = replace(url, ‘http://www.siteweb1.fr/’, ‘http://www.siteweb2.fr/’);

UPDATE wp_blc_links SET final_url = replace(final_url, ‘http://www.siteweb1.fr/’, ‘http://www.siteweb2.fr/’);
UPDATE wp_blc_links SET url = replace(url, ‘http://www.siteweb1.fr/’, ‘http://www.siteweb2.fr/’);
UPDATE wp_blc_links SET final_url = replace(final_url, ‘http://www.siteweb1.fr/’, ‘http://www.siteweb2.fr/’);
UPDATE wp_options SET option_value = replace(option_value, ‘http://www.siteweb1.fr/’, ‘http://www.siteweb2.fr/’);
UPDATE wp_postmeta SET meta_value = replace(meta_value, ‘http://www.siteweb1.fr/’, ‘http://www.siteweb2.fr/’);
UPDATE wp_postmeta SET meta_value = replace(meta_value, ‘http://www.siteweb1.fr/’, ‘http://www.siteweb2.fr/’);
UPDATE wp_posts SET guid = replace(guid, ‘http://www.siteweb1.fr/’, ‘http://www.siteweb2.fr/’);
UPDATE wp_posts SET guid = replace(guid, ‘http://www.siteweb1.fr/’, ‘http://www.siteweb2.fr/’);