DB: Daten finden und ersetzen (REPLACE) ?!

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

DB: Daten finden und ersetzen (REPLACE) ?!

Beitrag von Condor »

Hallo,

Ich habe unser Portal aktualisiert.
Wenn man vorher z.B. eine Grafik im Portal einbinden wollte, sah der Befehl so aus: img[XY]img.
Seit der aktualisiert sieht der Befehl aber so aus: [img]XY[/img].

Die Daten wurden in die DB übernommen.
Jetzt würde ich gerne die alten Daten in der DB suchen und durch die neue Schreibweise ersetzen.

Gibts da was an Tips, Tricks, Tools etc. ?

Ich danke für jede hilfreiche Antwort.

Mfg
Condor
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5389
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ich nehme mal an, daß "XY" immer unterschiedlich ist, sofern es unterschiedliche Images sind?
Dann müsste ich so aus dem Stehgreif passen...
Wenn die Inhalte gleich sind, kann man folgendes machen:

Code: Alles auswählen

UPDATE tabellenname SET feldname = select replace(feldname, 'Voher_String', 'Nachher_String') WHERE bedingungen;
Mit ...replace()... ersetzt die Datenbank in dem angegebenen Feld den darin enthaltenen Vorher_String durch den Nachher_String.
Das select um das replace herum sorgt dafür, daß der gesamte geänderte Inhalt zurückkommt, um dann mit der update-Anweisung neu in das Feld geschrieben werden zu können.
Jetzt schlag mich aber nicht, wenn vielleicht bei dem select noch die Tabelle angegeben werden muss. Ist lange her, als ich das zuletzt benutzte...

Vielleicht hilft dieser Ansatz ja schon, ansonsten kann man die Inhalte mittels eines Datenbank-Client ändern, nur kenne ich keinen ausser MySQL Front und dieser kann es nach meinem Wissen auch nicht...
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag von Olli Oberhausen »

Vorher:" img[XY]img ".
Nacher:" [img]XY[/img] ".

UPDATE phpbb_posts_text SET post_text = replace(post_text, ' img[', ' [img]') WHERE post_text LIKE '% img[%';

UPDATE phpbb_posts_text SET post_text = replace(post_text, ']img ', '[/img] ') WHERE post_text LIKE '%]img %';

Fehlt nur noch die bbcode_uid falls es ein phpBB ist :grin:

Bitte alle Leerzeichen beachten... Dann sollte es funktionieren.
Aber wie immer: Vorher db-backup machen

Olli
Zuletzt geändert von Olli Oberhausen am 09.01.2007 18:34, insgesamt 2-mal geändert.
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
AmShaegar
Mitglied
Beiträge: 408
Registriert: 09.07.2004 17:33

Beitrag von AmShaegar »

Code: Alles auswählen

WHERE post_text LIKE '% ]img %'; 
die ist das ende der zweiten zeile. ich denke es klappt so nicht, denn das leerzeichen vor ]img darf nicht sein, da dort keines ist sindern die adresse des bildes ;-)
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag von Olli Oberhausen »

Rischtig - und geändert...

Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hallo,

Ich möchte mich erstmal für eure Mühe und Tips bedanken.
Ich werde mir das später mal genauer vornehmen.

@Olli Oberhausen:
Nein, es geht nicht um eine DB vom phpBB.

Bis bald.

Mfg
Condor
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hallo Leute,

@Olli Oberhausen:

Hat wunderbar geklappt. Vielen Dank an euch !

Hier noch ein Codesnipsel, für die, die auch mal sowas benötigen:

Code: Alles auswählen

<?php

$server  = "SERVER";
$user    = "USER";
$pass    = "PASSWORD";
$dbase   = "DBASE";
$tabelle = "TABLE";
$spalte  = "SPALTE";

  $conn = @mysql_connect($server, $user, $pass);
  if($conn)
  {
    mysql_select_db($dbase, $conn);
  }
  else
  {
    die("<B>Etwas läuft hier schief!!!");
  }

$search_text  = "img[";
$replace_text = "[img]";

$sql = "UPDATE $tabelle ";
$sql.= "SET $spalte = ";
$sql.= "REPLACE($spalte, \"$search_text\", \"$replace_text\") ";
$result = mysql_query($sql, $conn);

?>
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag von Olli Oberhausen »

Condor hat geschrieben:
Hat wunderbar geklappt. Vielen Dank an euch !
Ja super....
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
Antworten

Zurück zu „Coding & Technik“