Wörter in MySQL-Datenbank ersetzen

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Michael

Wörter in MySQL-Datenbank ersetzen

Beitrag von Michael »

Gibt es einen Befehl, mit dem ich in phpMyAdmin die gesamte Datenbank nach einem Wort durchsuchen lassen kann und er jedes dieser gefundenen Wörter durch ein bestimmtes anderes ersetzen soll? Falls ja, funktioniert das Ganze auch mit URLs, so dass ich z.B. einen kompletten Link durch einen anderen ersetzen kann?

Wäre für jeden Tipp dankbar!

Dump runterladen und im Editor per Suchen/Ersetzen die Änderungen vornehmen, kommt im Übrigen nicht in Frage. Die Änderungen sollten schon in der Datenbank selbst vorgenommen werden, ohne erneut ein Backup einspielen zu müssen.

Michael
Benutzeravatar
biototo
Mitglied
Beiträge: 803
Registriert: 10.04.2002 09:51
Wohnort: Düren - Rheinland (zw Köln u. Aachen)
Kontaktdaten:

Beitrag von biototo »

Das ist jetzt nicht abwertend gemeint, aber am einfachsten schnappst du dir das mySQL-Manual und bastelste dir den Querry selber zusammen, denn bis du uns erklärt hast, was du willst und du dir zwischendrin die Datenbank zerpustet hast , hast du das 3mal gemacht ....
Michael

Beitrag von Michael »

biototo hat geschrieben:Das ist jetzt nicht abwertend gemeint, aber am einfachsten schnappst du dir das mySQL-Manual und bastelste dir den Querry selber zusammen, denn bis du uns erklärt hast, was du willst und du dir zwischendrin die Datenbank zerpustet hast , hast du das 3mal gemacht ....
Also, ich versuche es mal etwas verständlicher an einem Beispiel zu erklären:

Angenommen, in meiner Datenbank befindet sich 50x das Wort "Kaffee", in allen Tabellen. Jetzt möchte ich alle 50 Wörter durch "Tee" ersetzen lassen. Am Einfachsten ist es, wenn ich mir die dump.sql runterlade, sie mit einem Text-Editor öffne, nach dem Wort "Kaffee" suche, alle diese Wörter automatisch durch "Tee" ersetzen lasse und dann das Backup wieder einspiele. Dann habe ich die selbe Wirkung, nur dass ich es direkt in der Datenbank machen will, ohne dazu ein neues Backup aufspielen zu müssen.

War das jetzt etwas verständlicher? Das ist ähnlich wie die Funktion Wörter-Zensur des phpBB2, nur dass ich nicht will, dass in Zukunft auch alle Wörter "Kaffee" durch "Tee" ersetzt, sondern nur die, die sich aktuell in der Datenbank befinden.

Mit Kaffee und Tee ist übrigens nur ein unbedeutendes Beispiel gemeint. Ich habe nicht vor, alle Kaffees durch Tees zu ersetzen. :lol:

Gruß Michael
Benutzeravatar
Root007
Mitglied
Beiträge: 260
Registriert: 14.12.2002 08:13

Beitrag von Root007 »

Hi,

ich muss mal diesen Thread ausgraben, da ich genau den selben Wunsch habe: Ein Wort in der Datenbank suchen und mit nem anderen ersetzen.

Geht das, und wenn ja, wie?

Oder wäre es besser, eine dump.sql zu machen, runterzuladen, darin suchen&ersetzen und wieder hochspielen?

Danke schonmal für eure Hilfe!

Greetz
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Handelt es sich um ein Wort in den Beiträgen ?
SELECT post_id FROM phpbb_posts_text WHERE post_text LIKE '%test%';
Benutzeravatar
Root007
Mitglied
Beiträge: 260
Registriert: 14.12.2002 08:13

Beitrag von Root007 »

Hi,

also - ich schweif etwas aus...: Ich hab meine Forenregeln leicht geändert, und nun hat sich ein User bei mir gemeldet mit der Frage, ob ich nicht seinen Usernamen ändern könnte da er nicht ganz mit den Regeln vereinbar war. Ich weiß, sowas sollte man normal nicht machen...

Auf alle Fälle reichte es ja nicht, "nur" den Usernamen zu ändern - der Name kommt ja auch des Öfteren in den Posts vor... Ich hab dann doch ein komplettes Backup gemacht (von der gesamten DB), dieses runtergeladen und darin suchen&ersetzen, wieder hochgeladen, alte Tabellen gelöscht und dump wieder eingespielt.

Ok, das war jetzt vielleicht mit der Brechstange, aber es hat hervorragend geklappt :D .

Aber da wir schon dabei sind und ich ja gerne dazulerne: Wäre das auch einfacher gegangen?

Thx!
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

öhm.. du wolltest also, wenn jemand im Beitrag seinen Namen genannt hat, diesen ändern ?
Nuja, wenn´s funktioniert.. über phpmyadmin wär´s vielleicht "sauberer". ;)
Matlock
Mitglied
Beiträge: 288
Registriert: 01.07.2003 12:32
Wohnort: Südpfalz
Kontaktdaten:

Beitrag von Matlock »

Ich hab selbst vor kurzem meinen eigenen Namen in unserem Forum geändert und es hat mich gestört, daß bei früheren Quotes (aus der Zeit vor der Änderung) mein alter Name angezeigt wurde. Das hab ich wie folgt gelöst in der viewtopic.php:

Code: Alles auswählen

$message = str_replace("MEINALTERNAME hat folgendes geschrieben", "MEINNEUERNAME hat folgendes geschrieben", $message);
Ich war einfach zu faul, das in der DB manuell zu ändern :grin:

Das läßt sich natürlich auch auf das obige Kaffee -> Tee Beispiel anwenden, nur wird dann halt IMMER ersetzt, logo.
Benutzeravatar
Root007
Mitglied
Beiträge: 260
Registriert: 14.12.2002 08:13

Beitrag von Root007 »

@Acid: hat phpmyadmin ne suchen&ersetzen funktion? suchen geht, das hab ich ja auch probiert, aber knapp 500 Einträg von Hand dann zu ändern...

@Matlock: das Prob ist zwar dann auch nicht an der Wurzel gelöst... und wie du ja sagst: Damit wird immer ersetzt, und das würde ich nicht wollen.
Matlock
Mitglied
Beiträge: 288
Registriert: 01.07.2003 12:32
Wohnort: Südpfalz
Kontaktdaten:

Beitrag von Matlock »

Root007 hat geschrieben: @Matlock: das Prob ist zwar dann auch nicht an der Wurzel gelöst... und wie du ja sagst: Damit wird immer ersetzt, und das würde ich nicht wollen.
Und wenn Du noch ne Bedingung einbaust, so daß das str_replace nur ausgeführt wird, wenn das Posting aus der Zeit vor dem tt.mm.jjjj ist? Oder gehts gar nicht um ne zeitliche Abgrenzung?
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“