![]() |
[PHP/MySQL] Wieso ist diese Abfrage case-insensitive?
Hallo miteinander,
ich habe eine ganz simple Datenbankabfrage, die aus einem Benutzernamen die zugehörige Benutzer-ID ermitteln soll. Das mache ich momentan so:
SQL-Code:
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 user_name = 'Matze' LIMIT 1
SQL-Code:
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()".
SELECT user_id FROM users WHERE LOWER(user_name) = 'matze' LIMIT 1
Warum ist das so? Grüße, Matze |
Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?
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 :zwinker: Lies dir eventuell diesen ![]() Greetz alcaeus |
Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?
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 |
Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?
Moin Matze,
ich zitiere die MySQL-Hilfe: Zitat:
Greetz alcaeus |
Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?
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 |
Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?
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 |
Re: [PHP/MySQL] Wieso ist diese Abfrage case-insensitive?
Sagte ich ja bereits:
Zitat:
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). :mrgreen: Grüße, Matze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz