MySQL - Daten in einer DB ändern

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
Xelos
Mitglied
Beiträge: 19
Registriert: 01.07.2004 15:18

MySQL - Daten in einer DB ändern

Beitrag von Xelos »

Hallo,
Ich habe eine Tabelle in einer Datenbank, in der so ca 2000 Bilder sind.
Mehr wie die Hälfte davon haben die Endung .jpg
Nun möchte ich die Dateinamen lassen, und die Endung .jpg in .gif ändern, da ich die .jpg Bilder durch durchsichtige .gif Bilder ersetzen will.

Nun könnte man ja hingehen und diese Tabelle per phpMyAdmin ändern. So wäre man dann in ein paar Monaten schon fertig ;)

Kennt jemand evtl. einen einfacheren Weg?

Gruß
Xelos
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag von Dennis63 »

Ich weiß nicht, ob MySQL das selber kann, aber wie wäre es, mit einem Querry alle Namen auszulesen, die auf .jpg enden. Dann mit PHP diese Liste bearbeiten, so daß .jpg zu .gif wird und dann per PHP 1000 Querrys erzeugen und ausführen?

Grüße
Dennis
Xelos
Mitglied
Beiträge: 19
Registriert: 01.07.2004 15:18

Beitrag von Xelos »

Hallo Dennis,
dass wäre sicherlich eine gute Möglichkeit.
Aber leider weiss ich nicht, wie das geht. Bin noch recht neu mit php.

Gruß
Xelos
Zuletzt geändert von Xelos am 02.11.2004 07:42, insgesamt 1-mal geändert.
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag von Dennis63 »

Man kann es auch ganz ohne PHP machen.

Mit phpMyAdmin z.B.

Code: Alles auswählen

SELECT
CONCAT(
"UPDATE lieder SET liedname='",
LEFT(liedname,LENGTH(liedname)-4),
".gif' WHERE liedname = '",liedname,"';")
AS QUERRY
FROM lieder
WHERE liedname LIKE '%.jpg'
Tabelle "lieder" und Spalenname "liedname" natürlich anpassen. Das ergebnis wird dann so aussehen:

Code: Alles auswählen

UPDATE lieder SET liedname='test2.gif' WHERE liedname = 'test2.jpg';
UPDATE lieder SET liedname='test5.gif' WHERE liedname = 'test5.jpg';
Und das kann man wieder per phpMyAdmin ausführen, was dann alles ändert.

Grüße
Dennis
Xelos
Mitglied
Beiträge: 19
Registriert: 01.07.2004 15:18

Beitrag von Xelos »

Habe ich gemacht, bekomme aber eine Fehlermeldung beim ausführen des erzeugten Codes:

Code: Alles auswählen

INSERT INTO `products` 
VALUES (

'UPDATE products SET products_image=''10.gif'' WHERE products_image = ''10.jpg'';'
) 
MySQL meldet:  

#1136 - Column count doesn't match value count at row 1 
Hast du noch ne Idee hierzu?
Kann es sein, dass der erzeugte Code davon ausgeht, dass überall .jpg vorhanden ist? Es ist ja wie gesat ein gemisch aus .gif und .jpg...beides ist in der Tabelle vorhanden.

Gruß
Xelos
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Mal blöd gefragt weshalb machst du nicht ein Update Statement und suchst nach den letzten 3 Zeichen im Text und ersetzt diese durch die Alternative.....

Sofern der die File gleich sind lässt sich das mit einem Statment erledigen......

Und warum zum Teufel fügst du ein Update in ein Insert ein??? verrückt?

Die Stringfunktionen von mysql gibt es nicht zum Spass :roll:
Schon mal an ein Replace in Verbindung mit Substring gedacht?
Dann noch ein passender Where Ausschluss und alles wird upgedatet....

-> http://dev.mysql.com/doc/mysql/de/Strin ... ml#IDX1141
Antworten

Zurück zu „Coding & Technik“