Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Wildcard umgehen => " _ "

Empfohlene Antworten

Veröffentlicht

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.

"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

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.

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?

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"

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.

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.