php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.06.2007, 17:21  
Benutzer
 
Registriert seit: 22.04.2005
Beiträge: 59
Aris Sung
Standard groß- kleinschreibung ignorieren

ich hab mich mal wieder in ein simples problem reingesteigert und die übersicht verloren
Situation:
In einer Tabelle haben wir Benutzernamen. Beispiel:
Test
Diesen Benutzernamen benutzt man jetzt natürlich zum einloggen in einem Formular.
Gebe ich nun aber statt 'Test', 'test' ins Formular sieht er das nicht als den Benutzernamen an. Ähnlich verläuft es mit 'tEST', 'TEST' etc.

die sql-Query-Abfrage ist folgende:
Code:
$sql = "SELECT * FROM users WHERE user='".$benutzername."';
ich hab es nun ausprobiert mit stripos und strtolower, aber damit kann ich ja nur die eingabe ändern. in der tabelle steht ja weiterhin 'Test', es sei denn ich kann die Abfrage so ändern das er alle User-Felder in Kleinschreibung durchließt.

vielleicht denke ich auch wieder zu kompliziert
thx für jede antwort
Aris Sung ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.06.2007, 17:48  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Also dieses Problem ist mir neu. Ich bin eigentlich immer davon ausgegangen das MySql Groß-Kleinschreibung ignoriert, so ist es zumindest bei meinen Scripten.

Was natürlich nicht funktioniert sind passwörter im MD5 Format, aber sowas brauchst du hier ja nicht...

Ne möglichkeit währe, dass du alle in der DB gespeicherten Einträge auf klein machst, und dann einfach mit strtolower() abfragst.
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline   Mit Zitat antworten
Alt 01.06.2007, 18:04  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wenn VARCHAR-Vergleiche gleicher Strings - jedoch mit verschiedener Großkleinschreibung - fehlschlagen, hast du vermutlich ein Kollation-Problem.

Welche Kollation ist denn für diese Spalte gesetzt? Endet sie auf *_bin oder *_cs? Das heißt binary bzw. case-sensitive, das heißt der Vergleich schlägt dann auch bei Großkleinschreibe-Unterschieden fehl. Wenn der Effekt nicht erwünscht ist, stelle eine Kollation ein, die mit *_ci endet. ci steht für Case-Insensitive. Also Großkleinschreibung ignorierend. Ich würde dann die *_general_ci empfehlen.
Zergling-new ist offline   Mit Zitat antworten
Alt 02.06.2007, 01:17  
Benutzer
 
Registriert seit: 22.04.2005
Beiträge: 59
Aris Sung
Standard

die felder für die benutzernamen haben die koallition latin_general_ci
aber tomtaz hatte recht. ich habe nur eine if-Bedingung aus den Augen verloren, die den Namen in der DB und den eingegebenen Namen vergleicht hat. Letztendlich brauche ich aber nur den Namen um in der Tabelle auf die gewünschte Zeile zu kommen. ein weiterer vergleich ist also unnötig, da die suchanfrage dann sowieso nichts findet.
schließlich habe ich die gewünschte zeile und vergleiche md5-codierte-eingabe mit md5-passwort in der DB. da muss der user aber auf Groß- und Kleinschreibung achten (wie überall ).

aber langsam wird es besser bei fehlern wirklich 'jede' zeile im code nochmal zu überprüfen . hierbei hatte ich aber tomaten auf den augen
Aris Sung ist offline   Mit Zitat antworten
Alt 02.06.2007, 16:53  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Aris Sung
die felder für die benutzernamen haben die koallition latin_general_ci

http://de.wikipedia.org/wiki/Koalition
http://de.wikipedia.org/wiki/Kollation

kleiner, aber feiner unterschied.
axo ist offline   Mit Zitat antworten
Alt 10.06.2007, 13:14  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

Natürlich ist es sehr wichtig was für eine Kollation die felder haben, und wie Zergling schon gesagt hat, spielt die endung von zeichensatz eine rolle (ci=insensetiv und cs=sesnsetiv).
Nicht zuletzt möchte ich aber auf den Zeichensatz von DB-verbindung zuweisen, da dieser Zeichensatz eine ständige fehlerquelle bei PHP-scripten in verbindung mit Mysql ab version 4.1 verursacht.
bei vielen Mysql-Server ist dieser Zeichensatz standart auf utf8 gesetzt, was natürlich bei darstellung von Umlauten ein problem verursacht.
Die Rettung bietet
mysql_query("SET NAMES 'zeichensatz'",$dblink);
in deinem fall muss es an der stelle von 'zeichensatz' 'latin1' stehen.
Dieses befehl muss man am bestens direkt nach der verbindung zur db machen, also bevor du dein erstes select,insert oder update ausführst.

(ich benutze immer utf-8 und schreibe an stelle von 'zeichensatz' 'utf8' !ohne '-' zwischen utf und 8 !)
Immer Aufpassen, dass charset auf der Html oder PHP-Seite mit Kollation von tabellenspalten und auch db verbindung stimmt.

Ich persönlich bin ein utf8 Liebhaber.
in php
bei scriptausgaben
steht bei mir immer
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
aber um sicher zu gehen sende ich immer noch ein zusätzlicher Header
header("Content-Type: text/html; charset=utf-8");

dann passe ich natürlich auf, dass die textspalten in mener tabelle auch die passende Kollation haben, also nehme ich
utf8_unicode_ci

und direkt nach der verbindung zur DB mache ich
mysql_query("SET NAMES 'utf8'",$dblink);

Jetzt funktionieren meine Scripts in allen sprachen.
__________________
Slava
http://bituniverse.com
Slava ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Groß-und Kleinschreibung angehender Freak PHP Tipps 2008 14 06.06.2008 20:42
[Erledigt] file_exists() und groß und kleinschreibung netti PHP Tipps 2008 21 21.05.2008 18:07
Groß- und Kleinschreibung in HTML Textfeldern kampfnickel PHP Tipps 2007 19 05.03.2007 10:27
Groß- und Kleinschreibung ignorieren?! &lt;Daniel&gt; PHP Tipps 2006 2 05.07.2006 11:00
strpos mit ignorierung der groß und kleinschreibung chiliGREEN PHP Tipps 2007 3 02.11.2005 10:28
Fehlermeldung/Warnung ignorieren? c-f-g Datenbanken 10 10.06.2005 15:09
groß- und kleinschreibung PHP Tipps 2005 4 09.05.2005 13:36
Gross- und kleinSchreibung Off-Topic Diskussionen 67 07.03.2005 18:45
str_replace() soll gross und kleinschreibung nicht beachten Alpha Centauri PHP Tipps 2005 7 18.02.2005 18:42
[Erledigt] ereg_replace(); - groß und kleinschreibung? PHP-Fortgeschrittene 5 07.02.2005 14:40
str_replace Gross und Kleinschreibung missachten? Ypsillon PHP Tipps 2004-2 2 09.12.2004 17:26
[Erledigt] Leere Felder ignorieren Datenbanken 1 08.12.2004 22:02
kein Unterschied zwischen Groß- und Kleinschreibung PHP Tipps 2004-2 4 06.12.2004 17:28
Abfrage Gross und Kleinschreibung! PHP Tipps 2004-2 7 05.12.2004 17:14
Datum abfragen und Jahreszahl ignorieren Datenbanken 10 29.07.2004 10:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql groß kleinschreibung ignorieren, php groß kleinschreibung ignorieren, sql groß kleinschreibung ignorieren, php groß und kleinschreibung ignorieren, mysql groß und kleinschreibung ignorieren, sql groß und kleinschreibung ignorieren, sql select groß kleinschreibung ignorieren, php gross kleinschreibung ignorieren, mysql gross kleinschreibung ignorieren, groß und kleinschreibung ignorieren php, http://www.php.de/datenbanken/44132-grossy-kleinschreibung-ignorieren.html, php mysql groß kleinschreibung ignorieren, sql gross kleinschreibung ignorieren, mysql abfrage kleinschreibung, php sql groß kleinschreibung ignorieren, php groß kleinschreibung nicht beachten, mediawiki kleinschreibung, sql abfrage gross kleinschreibung ignorieren, mysql abfrage großschreibung, mysql groß klein ignorieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:21 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.