ds2k5: MySQL Abfragen: Groß- & Kleinschreibung

Guten Abend,

Ich habe eine Frage bezüglich MySQL Datenbanken und Groß- / Kleinschreibung bei der Abfrage. Leider hab ich zu folgendem Problem keine Lösung gefunden:

Ich habe ein Loginsystem und ich will dass der Benutzer immer erkannt wird, egal ob er "benutzer", "Benutzer" oder "BenUTzeR" eingibt.

Meine Abfrage lautet zurzeit so (Leider Case abhängig):
$select = "SELECT name, password FROM members WHERE name LIKE '$username'";

Hoffe auf Hilfe, danke im Vorraus ;)

  1. Stringfunktionen, die heissen vielleicht upper() oder ucase() oder so...

    1. Stringfunktionen, die heissen vielleicht upper() oder ucase() oder so...

      http://dev.mysql.com/doc/refman/5.1/de/string-functions.html

      1. Stringfunktionen, die heissen vielleicht upper() oder ucase() oder so...

        http://dev.mysql.com/doc/refman/5.1/de/string-functions.html

        achso ich dachte du meinst den eingabe string, danke für den link, ich werde es mal probieren.

        1. Problem gelöst, es lag jedoch an überhaupt was anderem. ;)

    2. Stringfunktionen, die heissen vielleicht upper() oder ucase() oder so...

      es gibt ja strtolower() aber der eingegebene string ist ja nicht das problem sondern die sachen in der DB, die sind ja groß und klein gemischt, und wenn ich dort "... WHERE name LIKE '$username' ..." mit $username in klein habe, dann werden einträge mit Großbuchstaben nicht angezeigt.

      also ein Beispiel:

      DB Eintrag Name: "MusterMann"
      Benutzer gibt ein: "Mustermann"

      strtolower($username) gibt dann "mustermann", aber das ist nicht gleich "MusterMann" wie er in der DB steht.

  2. WHERE name LIKE xyz ist übrigens grundverkehrt.

    dann bekommst du für die nutzernamen rafael und raf einmal nur rafael und einmal rafael UND raf ausgeliefert. Wenn username unique ist kannst du optional noch einen limitparameter anhängen.

  3. echo $begrüßung;

    Ich habe eine Frage bezüglich MySQL Datenbanken und Groß- / Kleinschreibung bei der Abfrage.

    Die Groß-/Kleinschreibung nicht zu beachten ist die Standardeinstellung von MySQL. Wäre dein Problem nicht schon gelöst, gäbe ich dir den Tipp, das was du gemacht hast um Groß-/Kleinschreibungsbeachtung hinzubekommen nicht bzw. rückgängig zu machen, oder eine Kolation zu verwenden, die die für deine verwendete Sprache richtigen Umwandlungsregeln enthält (z.B. ß <-> SS)

    $select = "SELECT name, password FROM members WHERE name LIKE '$username'";

    Wenn der User ein % eingibt ist er "Admin", denn das ist vermutlich der erste auf dieses Jokerzeichen passende Datensatz. Und wenn du $username nicht MySQL-gerecht maskiert hast, gebe ich einen Wert ein, der deine Abfrage so verändert, dass ich der Admin werde. (SQL-Injection)

    echo "$verabschiedung $name";