Mailinglisten-Archive |
Andreas Küster schrieb am Freitag, den 13. August 1999: > Wenn Ich ein backslash (\) in ein varchar (oder char - feld) > eintragen will bekomme ich nur Fehlermeldungen. Du mußt zwei Sachen im Auge halten: 1.) Wie muß die SQL-Query für MySQL aussehen, damit solche Zeichen richtig ankommen. 2.) Wie muß ich das im Rahmen der verwendeten Programmiersprache oder sonstigen Umgebung schreiben, damit es tatsächlich wie in 1.) gewünscht ankommt. Zum ersten Punkt "Wie braucht's MySQL?" gibt's das MySQL-Handbuch im Kapitel "7.1.1 Strings" Auskunft. Bitte lesen! :) > [...] mit einem "SELECT 'Test\\';" probiert > wenn ich den querey direkt unter mysql in der shell absetze bekomme > ich das erwartete resultat > "Test\" Was Du im Programm "mysql" eingibst, kommt auch wirklich so bei MySQL an. Deshalb mußt Du nur Punkt 1) beachten. > wenn ich dagegen genau den selben query innerhalb einer API (konkret > unter Perl) einsetze bekomme ich nur eine Fehlermeldung. Perl aber hat seine eigenen Quotingregeln, die zu beachten sind: $s = '\\'; # Jetzt enthält $s _einen_ Backslash! $query = "SELECT 'Test\\\\'"; Die am wenigsten gegen Fehler anfällig Schreibweise in Perl für Stringkonstante, die Apostrophe enthalten sollen (wie oft bei SQL-Queries der Fall), ist vielleicht: $query = q{SELECT 'Test\\\\'}"; Für den doppelten Backslash muß man allerdings weiterhin 4 Stück schreiben. Details zu Perls Quoting siehe in der Man-Page (man perlop), Abschnitt "Quote and Quote-like Operators". > Der gleiche Fehler ist auch innerhalb von PHPmyAdmin reproduzierbar. Wenn > ich dort diesen query eintrage bekomme ich nur die Fehlermeldung: > > MySQL said: You have an error in your SQL syntax near ''Hallo\' ;' at line 1 Das ist dann ein Mangel von phpMyAdmin, weil das eigentlich für das richtige Quoting sorgen _sollte_, so daß Du Dir keine Gedanken machen mußt. (Könnte auch mit der Konfiguration von PHP zu haben, ob dort magic_quote an oder aus ist ...) Vermutlich schaffst Du es, indem Du vier Backslashes schreibst. Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ > PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7 --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive