mySQL UPDATE-Befehl per PHP schlägt fehl bei Backslashes

Hallo zusammen,

ich möchte mit folgendem Befehl einen einfach Backslash durch einen einfach Slash ersetzen.

mysql\_query("UPDATE tabelle SET fullpath = replace (fullpath, '\\', '/')");

Leider erhalte ich immer die Fehlermeldung:
„You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‚‘)’ at line 1“.

Das eigentich interessante ist aber, dass der Befehl

UPDATE db\_01\_tbl\_Document\_attachments SET fullpath = replace (fullpath, '\\', '/')

unter phpMyAdmin einwandfrei funktioniert.

Was ist falsch?

Gruß und Dank!

Hallo

mysql_query(„UPDATE tabelle SET fullpath = replace (fullpath,
‚\‘, ‚/‘)“);

du willst \ gegen / tauschen ?

dann ist das \\ um ein \ , da ein \ schon belegt ist braucht es \ um die zu machen sind also zwei \ \ nötig was ergibt \\

ich denk des macht phpmyadmin für dich , deswegen gibbet keine fehler , aber im php schon :smile:

Nochmal genauer

mysql_query(„UPDATE tabelle SET fullpath = replace (fullpath,
‚\‘, ‚/‘)“);

dein query ist in anführungszeichen …
also ergebnis ist dann

UPDATE tabelle SET fullpath = replace (fullpath,:’’, ‚/‘)

das wäre aber ein error … ’ uhhhh

also
brauch es noch ein \ , was wegen anführungszeichen \ sein muss,
also

UPDATE tabelle SET fullpath = replace (fullpath,:’\’, ‚/‘)

das in anführunszeichen ist dann

„UPDATE tabelle SET fullpath = replace (fullpath,:’\\’, ‚/‘)“

deutlich ??

Hallo Alex,

versuch doch mal den Befehl replace auszulagern.Vielleicht funktioniert es dann ja.

MfG Lucas

Noch nicht ganz klar
Hallo und danke für die Antwort,

leider ist mir das noch nicht ganz klar. Aber lass mich einfach mal ne Nacht drüber schlafen. Ich melde mich morgen nochmal.

Gruß

Selbst nochmal probiert
Hallo nochmal,

es soll ein Backslash durch einen Slash ersetzt werden.

Der Befehl dafür klappt auch folgendermaßen.

<?php mysql_query("UPDATE tabelle SET fullpath = replace (fullpath, '\\\', '/')");<br />?\>

Ich habe das so verstanden.

Unter PHP wird mit

echo "'\\\'";

zwei Backlashes ausgegeben. Das gleich gilt für den Update Befehl. Drei sind zwar angegeben aber es bleiben nur noch zwei davon übrig. Und mySQL nimmt dann von diesen zwei wiederum einen weg.

Siehe hier

http://dev.mysql.com/doc/refman/5.1/de/string-syntax…

Also PHP und mySQL nehmen jeweils einen Backslash weg.

Ist das so richtig?

Gruß und Dank!

1 Like

Hallo ,

Ja lol , ich habs auch nciht ausprobiert … hab da ein ganz anderes problem gehbt, unzwar eine escape sequence in die db zu schreiben … dann brauch man 2 ,
Hast gut probiert und die Lösung für dein Problem gefunden :wink:
Danke noch für die Lösung .