Herr_der_Ringe Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 Hallo. Folgendes. Wenn ich eine Datenbank für Usernamen habe und es existiert z.B. ein "a b c" in dieser Datenbank, ein anderer aber will sich als "a_b_c" registrieren und anmelden. Dann spinnt aber die Datenbank, für die das " _ " als Wildcard dient. Wie kann ich das umgehen?? PS: Ich habe leider keinen Code zur Verfügung^^. Ich hoffe, ihr könnt es mir auch so beantworten. Thx. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 "eine datenbank" ... welche datenbank? das wildcard _ gibts häufig. welcher felddatentyp hat das feld mit dem usernamen? welches frontend (php-script, scriptlet, applet)? ohne die informationen ist leider nicht viel anzufangen. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 verwende das für deine datenbank gültige Escapezeichen am häufigsten wird das \ verwendet. da du sagst user anmelden registrieren geh ich ma von ner webanwendung aus und du verwendest php und mysql. http://de.php.net zeigt sicher irgendwo welches Escape-Zeichen mysql verwendet. das kommt aufs gleiche wie wenn du in php in einem String " verwenden möchstest, muss auch ein \ davor. Wenn der User dann alles eingegeben hat und auf "Abschicken" geklickt hat, dann, is doch klar, musst du seine gesamten eingaben überprüfen, ob er zB eine gültige eMailadresse angegeben hat, oder html-tags rausfiltern. Genau da wird auch das Escape-Zeichen eingefügt. Mit ereg_replace kannst du dann nach den Wildcarts suchen und dann mit dem Escapezeichen ersetzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Herr_der_Ringe Geschrieben 20. Juni 2005 Autor Teilen Geschrieben 20. Juni 2005 Ich weiss nur, dass mit "Like" die Namen verglichen werden, und bei Like dient ein "_" ja als Platzhalter. Wenn ich dann ein "\" davorsetze, wird das umgangen? oder hab ich das falsch verstanden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 Genau so ist es. Ein Escape-Zeichen dient dazu, ein Zeichen das eine Funktion erfüllt zu "escapen", also die Funktion zu deaktivieren. echo "Gestern hat man mich gelobt. "Sehr gute Arbeit!" hat mein Chef gesagt" haut so ja nich ganz hin, also muss ich die " escapen: echo "Gestern hat man mich gelobt. \"Sehr gute Arbeit\" hat mein Chef gesagt" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Herr_der_Ringe Geschrieben 20. Juni 2005 Autor Teilen Geschrieben 20. Juni 2005 Also, wäre der Name a_b_c dann in der Datenbank als a\_b\_c zu finden/einzutragen, damits richtig funktioniert? Danke für die Antworten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 Also, wäre der Name a_b_c dann in der Datenbank als a\_b\_c zu finden/einzutragen, damits richtig funktioniert?Nein, wäre er nicht. In der Datenbank steht weiterhin a_b_c. Auch in die Datenbank kann ich diesen Wert hzineinschreiben, ein Statement wie INSERT INTO X (field1) VALUES ('a_b_c') funktioniert wunderbar. Auch beim Auslesen erhälst du ebenfalls, diesen Wert, nur bei einer LIKE Query musst du den Underscore escapen. Das heisst sowas hier funktioniert: SELECT * FROM X WHERE field1 = 'a_b_c' sowas hier allerdings wird dir nicht das gewünschte Ergebnis bringen: SELECT * FROM X WHERE field1 LIKE 'a_b_c' sondern durch so etwas ersetzt werden: SELECT * FROM X WHERE field1 LIKE 'a\_b\_c' Du solltest dich allerdings generell mit ein paar Grundkonzepten, sowohl was SQL, als auch was Datenbanken generell angeht, vertraut machen, sonst wirst du immer wieder vor solche Arten von Fehlern laufen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.