Ressources » PHP

Mémo - MySql

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.

Initialiser une communication avec le serveur en UTF-8

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);

Convertir une chaine de caractères ISO en UTF-8

UPDATE `myTable` SET `myColumn` = CAST(_latin1 'This is my String' AS CHAR CHARACTER SET utf8);

Remplacer un mot par un autre mot au sein d'une phrase

UPDATE `myTable` SET `myColumn` = REPLACE(`myColumn` ,'myOldWord', 'myNewWord');

Import et export en SSH

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

Convertir un fichier SQL ISO-8859-1 en UTF-8

iconv -f ISO-8859-1 -t UTF-8 nom_de_la_base.sql > nom_de_la_base.sql

Emuler la fonction UCFIRST de PHP. Mise en majuscule du premier caractère.

UPDATE myColumn SET myColumn = CONCAT(UPPER(SUBSTRING(myColumn, 1, 1)) , LOWER(SUBSTRING(myColumn FROM 2)));

Voir les requêtes MySQL actuellement en cours sur la base de données.

SHOW PROCESSLIST;