PHP – SQL – script mise à jour caractères mals encodés é ô ë è
Il arrive que les caractères accentués en français soient mals enregistrés dans la base de donnée. Pour remédier (mettre à jour) rapidement à ce problème, il existe plusieurs solutions. Celle que nous allons voir aujourd’hui utilise la fonction de manipulation de caractère de SQL : REPLACE() .
La fonction replace de SQL en action
Utilisation 1 dans un SELECT : afficher la ligne avec l’iD 1 de la table table_name en remplaçant tous les mots INSULTE par CENSURE contenu dans la colonne col2 de table_name
SELECT `col1`, `col2`, REPLACE(`col3` ,'INSULTE','CENSURE') FROM `table_name` WHERE id = 1;
Utilisation 2 dans un SELECT : théoriquement REPLACE peut être utilisé sans table ni colonne, directement sur une chaine de caractère
SELECT REPLACE('une grosse INSULTE' ,'INSULTE','CENSURE');
Utilisation 3 dans un UPDATE : mettre à jour la table table_name en remplaçant le mot Hello par Bonjour contenu dans la colonne column_name pour toutes les lignes.
UPDATE `table_name` SET `column_name` = REPLACE('column_name' ,'Hello','Bonjour');
Utilisation 4 dans un UPDATE : mettre à jour la table table_name en remplaçant le mot Hello par Bonjour contenu dans la colonne column_name pour la ligne id = 1
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'Hello','Bonjour') WHERE id = 1;
Utilisation 5 dans un UPDATE : mettre à jour la table table_name en remplaçant le mot Hello par Bonjour contenu dans la colonne column_name pour toutes les lignes contenant toto dans la colonne `column_name`
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'Hello','Bonjour') WHERE `column_name` LIKE %toto%;
le script
Voici le script sql à adapter et exécuter dans la console sql dans PHPMyAdmin pour mettre à jour la ligne 1 de la table. Attention, il faut au préalable que la colonne mise à jour dispose de l’encodage utf8_general_ci.
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'â','â') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'â','â') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'é','é') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'à©','é') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'í©','é') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'à ','à') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'è','è') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ç','ç') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'«','«') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'»','»') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,"’","'") ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ê','ê') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'àª','ê') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'€','€') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ô','ô') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ä','ä') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ù','ù') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'î','î') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'à¨','è') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'àª','ê') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'Å“','œ') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'à§','ç') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'à»','û') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'à®','î') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'à´','ô') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'à‰','é') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'à€','à') ; UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'Â','') ;
Equivalent en PHP
function toUtf8($string){ $string = str_replace('â','â', $string); $string = str_replace('â','â', $string); $string = str_replace('é','é', $string); $string = str_replace('à©','é', $string); $string = str_replace('í©','é', $string); $string = str_replace('à ','à', $string); $string = str_replace('è','è', $string); $string = str_replace('ç','ç', $string); $string = str_replace('«','«', $string); $string = str_replace('»','»', $string); $string = str_replace("’","'", $string); $string = str_replace('ê','ê', $string); $string = str_replace('àª','ê', $string); $string = str_replace('€','€', $string); $string = str_replace('ô','ô', $string); $string = str_replace('ä','ä', $string); $string = str_replace('ù','ù', $string); $string = str_replace('î','î', $string); $string = str_replace('à¨','è', $string); $string = str_replace('àª','ê', $string); $string = str_replace('Å“','œ', $string); $string = str_replace('à§','ç', $string); $string = str_replace('à»','û', $string); $string = str_replace('à®','î', $string); $string = str_replace('à´','ô', $string); $string = str_replace('à‰','é', $string); $string = str_replace('à€','à', $string); $string = str_replace('Â','', $string); return $string; }