Anzeige:
Ergebnis 1 bis 13 von 13

Thema: REPLACE mit mysql

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114

    REPLACE mit mysql

    hi!

    ich vor mir eine ersatzteil-db mit ca. 12000 einträgen.
    eine tabelle heisst ARTIKEL und besitzt unteranderem die spalte BILDPATH
    allse bilder die darin angegeben sind, sind als .bmp angegeben.
    ich wollte jetzt gerne .bmp durch den REPLACE befehl in .jpg umwandeln lassen, komme aber irgendwie nichz hin.

    weiss jemand, wie der genaue befehl lautet?

    diese versuche brachten kein glück:

    SELECT REPLACE ('.BILDPATH','.bmp','.jpg') FROM ARTIKEL

    die syntax lautet ja: REPLACE (string, from_string,to_string), aber irgendwie bekomme ich das nicht so richtig angewendet...

    danke schonmal gruss andi

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.06.2002
    Ort
    Hof
    Beiträge
    154
    willst du nur beim ausgeben der werte die endung
    ändern oder die daten in der datenbank?

    du übergibst der funktion doch '.BILDPATH' als string
    da kann man kein .bmp oder .jpg austauschen.

    cu, stop.h

  3. #3
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Beispiel:
    Code:
    SELECT REPLACE(a.bildpath,'.bmp','.jpg') as new_bildpath
    FROM artikel as a


  4. #4
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114
    hi!

    also ich möchte die daten in der datenbank ändern!

    wenn ich den befehl von gaert ausführe, dann funktioniert es schon, dass alle endungen von .bmp nach .jpg geändert werden. direkt nach dem ausführen wird mir nur die spalte new_bildpath angegeben und darin ist auch alles geändert wie ich es will, doch wenn ich mir jetzt die gesamte tabelle ARTIKEL wieder ansehe, steht in BILDPATH wieder alles mit .bmp drin!?

    wie lautet dann der befehl um die daten in der db zu ändern und nicht nur die geänderten ausgeben?

    danke gruss andi

  5. #5
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Alles klar!
    Bin davon ausgegangen, daß du einen Select machen willst, weil du das in deinem ersten Beispiel angegeben hast

    Also... der Befehl den du suchst sieht dann so aus!

    Mach aber vorher ein Backup, nicht dass dir die Daten in die Grütze gehen!
    Code:
    UPDATE artikel SET bildpath=REPLACE(bildpath,'.bmp','.jpg');


  6. #6
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114
    hi und vielen dank!

    hat alles bestens funktioniert...

    das mit dem select davor ist mir dann irgendwann auch selber ein/aufgefallen, dass er da nix in der db ändert...
    ich tue mache gerade learning by doing und da sind manchmal ein paar sachen recht unklar

    wie gut dass es euch hier gibt!

    danke

    gruss andi

  7. #7
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114
    wie schnell ist doch ein prob gelöst....doch treten immer wieder neue auf

    also das mit der endung ändern hat ja jetzt wunderbar geklappt...
    jetzt stimmt die pfadangabe aber noch nicht. hab ich mir gedacht machst es wie mit der endung...gesagt getan, doch so funktioniert es irgendwie nicht:

    die pfadangabe ist zurzeit bei jedem bild in der db: \\Gdiline\\bilder\\ (und jetzt kommt das bild 12233.jpg mit der bereits geänderten endung)

    ich möchte aber nun das der pfad in /Bilder/gdi/ geändert wird!

    hab folgendes gemacht:

    PHP-Code:
    UPDATE ARTIKEL SET CCKBILDPATH=REPLACE(CCKBILDPATH,' \\Gdiline\\ ','/Bilder/gdi/'); 
    ich merke gerade, dass die doppel \\ auch im php-code nciht angezeigt werden...
    also \\Gdiline\\bilder\\ heisst es normal...(gibts bestimmt ne ganz einfache lösung oder?)

    er bringt auch keine fehlermeldung, doch er sagt auch, dass 0 datensätze betroffen sind?? der pfad ist aber definitiv richitg angegeben.

    hat das was mit den Slashes zu tun? werden die jetzt vielleciht als kommentar angesehen oder so? hab sie schon in "" gesetzt, aber gleiches ergebnis...

    danke und gruss andi
    Geändert von Andislack (15-12-2002 um 12:29 Uhr)

  8. #8
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Lass mal die leerzeichen vor und nach \Gdiline\ weg!

    Bevor ich n update mache, bei dem ich nicht weiss was bei rauskommt würde ich immer ein select machen (schema dafür siehste ja in meinem ersten post), damit du siehst welche Datensätze wie betroffen sind.


  9. #9
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114
    hi!

    die sind nur durch den php-code entstanden.

    so sieht der normale befehl aus:

    UPDATE ARTIKEL SET CCKBILDPATH=REPLACE(CCKBILDPATH,'\\Gdiline\\bilder \\','/Bilder/gdi/');

    gruss andi
    Geändert von Andislack (15-12-2002 um 12:46 Uhr)

  10. #10
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114
    hi!

    diese fehlermeldung kommt, wenn ich mal einen slash bei dem alten pfad weglasse:

    Es scheint einen Fehler in Ihrer MySQL-Abfrage zu geben. Die MySQL-Fehlerausgabe, falls vorhanden, kann Ihnen auch bei der Fehleranalyse helfen.

    ERROR: Nicht geschlossene Anführungszeichen @ 83
    STR: '
    SQL: UPDATE ARTIKEL SET CCKBILDPATH=REPLACE(CCKBILDPATH,'\Gdiline\bilder\' ,'/Bilder/gdi/');

    Fehler

    SQL-Befehl :

    UPDATE ARTIKEL SET CCKBILDPATH=REPLACE(CCKBILDPATH,'\Gdiline\bilder\' ,'/Bilder/gdi/');

    MySQL meldet:


    You have an error in your SQL syntax near '')' at line 1

    aber da ist doch jedes anführungszeichen geschlossen!? was will der noch?

    danke gruss andi

  11. #11
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Frage... mit was führst du den Befehl aus (welches Programm)?

    Bei ... ,'\Gdiline\bilder\' ... escaped das letzte \ das darauffolgende Anführungszeichen => Der String ist nicht geschlossen!
    Du musst also auf jeden Fall die \ mit einem \ escapen...
    ... ,'\\Gdiline\\bilder\\' ... wäre alson schon korrekt!


  12. #12
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114
    mit phpmyadmin mache ich das alles

    also der alte pfad heisst ja \\Gdiline\\bilder\\ und soll zu /Bilder/gdi/ werden

    das würde dann bedeuten, dass ich sowas wie :

    UPDATE ARTIKEL SET CCKBILDPATH=REPLACE(CCKBILDPATH,'\\\Gdiline\\\bild er\\\','//Bilder//gdi//');

    MySQL meldet:

    You have an error in your SQL syntax near '/Bilder//gdi//')' at line 1


    aber dann kommt wieder eine andere fehlermeldung...

    ich habe die slashes schon überall gesetzt und verdoppelt und verdreifacht, aber es will einfach noch nicht ganz

    andi

  13. #13
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114
    hi!

    es funktioniert jetzt!

    ich brauchte ja \\ und um einen \ im sql befehl zu schreiben muss man ja schon zwei schreiben, also sind insgesamt \\\\ nötig.

    hier nochmal der gesamte befehl der zum erfolg geführt hat:

    UPDATE ARTIKEL SET CCKBILDPATH=REPLACE(CCKBILDPATH,'\\\\Gdiline\\\\bi lder\\\\','/Bilder/gdi/');


    so funktionierts ;-)

    vielen dank gruss andi

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •