AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP/MySQL] Wieso ist diese Abfrage case-insensitive?

Ein Thema von Matze · begonnen am 1. Feb 2009 · letzter Beitrag vom 2. Feb 2009
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

[PHP/MySQL] Wieso ist diese Abfrage case-insensitive?

  Alt 1. Feb 2009, 09:30
Hallo miteinander,

ich habe eine ganz simple Datenbankabfrage, die aus einem Benutzernamen die zugehörige Benutzer-ID ermitteln soll. Das mache ich momentan so:

SELECT user_id FROM users WHERE user_name = 'Matze' LIMIT 1 Nun möchte ich, dass die Groß-/Kleinschreibung nicht berücksichtigt wird. Daher dachte ich, löse ich das folgendermaßen:

SELECT user_id FROM users WHERE LOWER(user_name) = 'matze' LIMIT 1 Das seltsame ist jedoch, dass die Groß-/Kleinschreibung bereits bei der obersten Abfrage ignoriert wird. Es ist zwar das, was ich erreichen möchte, doch verstehe ich nicht, wieso das bereits der Fall ist und ich nicht zuerst alles auf die gleiche Schreibweise bringen muss. Im Beispiel von PHP mit "LOWER()" und "strtolower()" bzw. "UPPER()" und "strtoupper()".

Warum ist das so?

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?

  Alt 1. Feb 2009, 09:50
Moin,

ich nehme an du hast eine Collation mit dem Suffix "ci" verwendet, also bspw. utf8_binary_ci oder latin1_swedisch_ci. Nun ja, dreimal darfst du raten wofuer "ci" steht

Lies dir eventuell diesen Artikel aus der MySQL-Doku durch

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?

  Alt 1. Feb 2009, 10:05
Hi Andy,

Tatsache du hast Recht, danke. "utf8_unicode_cs" gibt es nur nicht.

Aber solange die Daten case-sensitive in die Datenbank geschrieben werden, ist das nicht so wild. Ich werde dennoch alles auf eine Schreibweise bringen. Nicht dass ich da mal etwas ändere und dann tut's nicht mehr.

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?

  Alt 2. Feb 2009, 19:05
Moin Matze,

ich zitiere die MySQL-Hilfe:
Zitat:
For binary strings (BINARY, VARBINARY, BLOB), comparisons use the numeric values of the bytes in the operands
Teste mal die Collation utf8_bin, laut dem Namen mochte man meinen die waere Binaer und damit Case-Sensitive

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?

  Alt 2. Feb 2009, 19:07
Hi Andy,

stimmt, das habe ich in phpMyAdmin übersehen. Gesucht hatte ich danach.
Nur ob es sich lohnt > 100 Tabellen nun alle zu ändern, wo's doch auch so geht, hm. Ein Sicherheitsrisiko sollte es ja nicht darstellen.

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?

  Alt 2. Feb 2009, 19:54
Nein, Sicherheitsrisiko ist es keines - und teilweise ist es auch ganz gut, wenn Abfragen case-insensitive sind (z.B. Benutzername-Kontrollen). Du solltest aber trotzdem mit LOWER arbeiten, es sei denn du kannst garantieren dass du immer eine case-insensitive Collation verwendest.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?

  Alt 2. Feb 2009, 20:17
Sagte ich ja bereits:

Zitat von Matze:
Ich werde dennoch alles auf eine Schreibweise bringen. Nicht dass ich da mal etwas ändere und dann tut's nicht mehr.


Ok danke, dann kann ich das ja mal so lassen wie es ist.
Die Frage, wieso die Groß-/Kleinschreibung ignoriert wurde, hast du ja beantwortet. Mir ging's nur darum zu wissen, was los ist, nicht dass ich irgendwas falsch mache. Ich kann sonst nicht schlafen und grübel immer über sowas im Bett (wäre schön, wenn es nicht so wäre).

Grüße, Matze
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz