Seite 1 von 1
DB: Daten finden und ersetzen (REPLACE) ?!
Verfasst: 05.01.2007 04:06
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
Verfasst: 05.01.2007 08:48
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...
Verfasst: 05.01.2007 10:49
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
Bitte alle Leerzeichen beachten... Dann sollte es funktionieren.
Aber wie immer: Vorher db-backup machen
Olli
Verfasst: 05.01.2007 22:54
von AmShaegar
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

Verfasst: 06.01.2007 11:30
von Olli Oberhausen
Rischtig - und geändert...
Olli
Verfasst: 06.01.2007 14:42
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
Verfasst: 09.01.2007 16:34
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);
?>
Verfasst: 09.01.2007 17:00
von Olli Oberhausen
Condor hat geschrieben:
Hat wunderbar geklappt. Vielen Dank an euch !
Ja super....