271 votes

Trouver et remplacer du texte dans toutes les tables en utilisant une requête mysql

J'utilise habituellement la recherche manuelle pour remplacer le texte dans la base de données mysql en utilisant phpmyadmin, et je suis fatigué maintenant, comment exécuter la requête find and replace qui recherche toutes les tables et remplace avec le nouveau texte dans phpmyadmin.

exemple : trouver le mot clé domain.com, remplacer par www.domain.com

Merci..

0 votes

Duplicata possible de stackoverflow.com/questions/639531/

1 votes

Vous pouvez faire quelque chose comme [ceci][1]. [1] : stackoverflow.com/questions/562457/

2 votes

Ce site vous aidera à obtenir ce dont vous avez besoin.

617voto

swapnesh Points 8611

Pour un single table mise à jour

 UPDATE `table_name`
 SET `field_name` = replace(same_field_name, 'unwanted_text', 'wanted_text')

De multiple tables -

Si vous voulez éditer à partir de toutes les tables, le meilleur moyen est de prendre la fonction dump et ensuite find/replace et le télécharger à nouveau.

4 votes

Est-ce que cela remplace un champ entier, ou est-ce que cela correspond à une sous-chaîne dans un champ ?

3 votes

Il remplacera une sous-chaîne dans le champ @RandyGreencorn . Elle est également sensible à la casse.

13 votes

Et il remplacera "domain.com" par "www.domain.com" et "www.domain.com" par "www.www.domain.com".

27voto

Lee Woodman Points 128

Placez ceci dans un fichier php et exécutez-le. Il devrait faire ce que vous voulez.

// Connect to your MySQL database.
$hostname = "localhost";
$username = "db_username";
$password = "db_password";
$database = "db_name";

mysql_connect($hostname, $username, $password);

// The find and replace strings.
$find = "find_this_text";
$replace = "replace_with_this_text";

$loop = mysql_query("
    SELECT
        concat('UPDATE ',table_schema,'.',table_name, ' SET ',column_name, '=replace(',column_name,', ''{$find}'', ''{$replace}'');') AS s
    FROM
        information_schema.columns
    WHERE
        table_schema = '{$database}'")
or die ('Cant loop through dbfields: ' . mysql_error());

while ($query = mysql_fetch_assoc($loop))
{
        mysql_query($query['s']);
}

0 votes

Ça n'a pas marché pour moi, mais c'est une bonne suggestion, ça aurait été sympa.

26voto

guest Points 61

Exécution d'une requête SQL dans PHPmyadmin pour trouver et remplacer du texte dans tous les articles de blog wordpress, par exemple en trouvant mysite.com/wordpress et en le remplaçant par mysite.com/news. La table dans cet exemple est tj_posts

UPDATE `tj_posts`
SET `post_content` = replace(post_content, 'mysite.com/wordpress', 'mysite.com/news')

2 votes

Merci pour cette requête. Pour mon site WordPress, le nom de la colonne est wp_posts donc la requête ressemble à UPDATE `wp_posts` SET `post_content` = replace(post_content, 'mysite.com/wordpress', 'mysite.com/news')

8voto

Umesh Patil Points 21
 UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);

Par exemple, si je veux remplacer toutes les occurrences de Jean par Marc, je vais utiliser la méthode ci-dessous,

UPDATE student SET student_name = replace(student_name, 'John', 'Mark');

1voto

Dom Points 1093

Ce site vous aidera à obtenir ce dont vous avez besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X