Ressources » PHP
Comment résoudre les problèmes d'encodage de caractères ou rechercher et remplacer certains textes par d'autres. Pour répondre entre autre à ces problématiques, voici un petit mémo sur MySql.
Lorsque l'on travaille sur un site multilingue, ou bien avec des données pour des applications tels que Flash, il est nécessaire de communiquer et de traiter des textes en UTF-8.
Pour cela, en plus de créer une base et des tables avec l'encodage utf8_general_ci, il est nécessaire d'initialiser une communication avec le serveur dans cet encodage.
$connexion = mysql_connect("localhost", "login", "password");
if($connexion){ $db = mysql_select_db("myDatabase"); }
mysql_query("SET NAMES 'utf8'", $connexion);
UPDATE `myTable` SET `myColumn` = CAST(_latin1 'This is my String' AS CHAR CHARACTER SET utf8);
UPDATE `myTable` SET `myColumn` = REPLACE(`myColumn` ,'myOldWord', 'myNewWord');
Export de la base de données puis compression ZIP
mysqldump --host=serveur_sql --user=nom_de_la_base --password=mot_de_passe nom_de_la_base > nom_de_la_base.sql
gzip nom_de_la_base.sql
Export de la structure seule (pas de données, juste la structure)
mysqldump --host=serveur_sql --user=nom_de_la_base --password=mot_de_passe --no-data nom_de_la_base > nom_de_la_base.sql
Export de la structure de quelques tables seulement
mysqldump --host=serveur_sql --user=nom_de_la_base --password=mot_de_passe nom_de_la_base -d table_1 table_2 > noms_des_tables.sql
Export des données de quelques tables seulement
mysqldump --host=serveur_sql --user=nom_de_la_base --password=mot_de_passe nom_de_la_base -t table_1 > data_de_table1.sql
Import de la base de données avec si besoin auparavant d'une décompression ZIP
gunzip nom_de_la_base.sql
cat nom_de_la_base.sql | mysql --host=serveur_sql --user=nom_de_la_base --password=mot_de_passe nom_de_la_base
Import en conservant l'encodage de données UTF-8
cat nom_de_la_base.sql | mysql --host=serveur_sql --user=nom_de_la_base --password=mot_de_passe --default-character-set=utf8 nom_de_la_base
iconv -f ISO-8859-1 -t UTF-8 nom_de_la_base.sql > nom_de_la_base.sql
UPDATE myColumn SET myColumn = CONCAT(UPPER(SUBSTRING(myColumn, 1, 1)) , LOWER(SUBSTRING(myColumn FROM 2)));
SHOW PROCESSLIST;