Auf einem Server kommen diese Zeichen \

Marco-P

Erfahrenes Mitglied
Hallo Leute,

hab da ein kleines Problem und hoffe ihr kennt das und könnt mir somit helfen.

Ich habe zwei Server der eine ist zum Testen der andere ist der Produktive.
Auf dem Testserver lauft alles super, aber auf dem Produktiven bekomme ich diese Fehlermeldung.

Code:
Anfrage (UPDATE time.plan SET schicht_id = '66' , kst = \'200\' WHERE plan_id = '717') konnte nicht ausgef??hrt werden : 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 '\'200\' WHERE plan_id = '717'' at line 1

Jo und der fehelr ist das ide zwei \ nicht da hin gehören. Aber wieso kommen sie auf dem einen Server da raus und bei dem anderen nicht?

das ganze lauft über php

MySL version = 5.5.8

MFG Marco
 
dachte ich auch aber der ist sauber und warum sollte es beim einen gehen und beim anderen nicht?

Kann es an den mysql server einstellungen liegen?
 
Wenn ich völlig blind tippen sollte (was offensichtlich deine Absicht ist, da du uns nicht sagst, wie der Update-String generiert wird), geh ich davon aus, dass auf dem einen Server magic_quotes an sind und auf dem anderen nicht.

Grüße,
Frezl
 
Also ich muss sagen, hier sind richtig schlaue leute unterwegs.
Zumindest war in der php.ini so wie Frezl das beschrieben hat der unterscheid bei den magic_quotes zu finden.

Ich habs jetzt mal geändert. Hoffe es klappt jetzt alleridngs muss der Server neu gestartet werden. und da ist mein It leer etwas langsam aber okay mit gerissener Achiles sene ist das okay.

Also ich halte euch auf dem laufenden.

Allerdings hat mein Kollege von nebenan gefragt ob das jetzt auswirkungen aht auf seine alte software die da drauf lauft. na lassen wir uns überraschen.

MFG Marco
 
Freut mich, dass ich helfen konnte. Allerdings ist deine Lösung des Problems vielleicht nicht die cleverste. Die Befürchtungen deines Kollegen sind begründet, es kann jetzt durchaus sein, dass andere Software nicht mehr läuft. Ich hätt das Problem eher so gelöst, dass ich in der neuen Software überprüfe, ob der Server magic_quotes an oder aus hat und dementsprechend die Strings selbst escape oder eben nicht. Dann ist deine Software zu beiden Servern kompatibel und du riskierst nicht, dass die alte Software zu spinnen anfängt...

Grüße,
Frezl
 
Wir werden es ausprobieren.

Aber mal ne Frage zu diesen Magic Quotes, wann kommen die den zum tragen?
 
http://de3.php.net/manual/en/security.magicquotes.php

Wenn du in PHP mit Strings arbeitest, musst du bestimmte Zeichen, die eigentlich eine Funktion in PHP haben, mit einem \ maskieren. Bestes Beispiel ist z. B. das Anführungszeichen ':

string = 'Wie geht's dir'; --> FEHLER!
string = 'Wie geht\'s dir'; --> :)

Genau das macht die Funktion magic_quotes für Eingaben in PHP automatisch. Allerdings führt die Funktion meistens nur zu Problemen, weil die Funktion nicht auf allen Servern on ist. Wenn du also selbst maskierst und dann noch magic_quotes drüberläuft, bekommst du plötzlich \ in deinen String, die da nicht hingehören. Außerdem gewöhnt man sich einen schlechten Programmier-Stil an, wenn man mit magic_quotes = on programmiert, weil man auf solche Feinheiten nicht mehr achtet.

Dieser Satz aus dem Manual fasst die Funktion eigentlich am besten zusammen:
Magic Quotes is a process that automagically escapes incoming data to the PHP script. It's preferred to code with magic quotes off and to instead escape the data at runtime, as needed.

Viele Grüße,
Frezl
 
Danke für die schnelle Hilfe und die ausführliche Erklärung.

Wir haben jetzt in der php.INI den Eintrag auf off gestellt und es geht.

MfG Marco
 

Neue Beiträge

Zurück