Zum Inhalt springen

Wildcard umgehen => " _ "


Herr_der_Ringe

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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"

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...