MySQL-Abfrage und das rätselhafte Ergebnis

Hallo allerseits,

ich stehe vor einem Rätsel. Ich bin zwar kein Profi, aber eigentlich relativ fit in MySQL, so dass ich Probleme immer selber lösen konnte aber hier komme ich einfach nicht weiter oder ich sehe den Wald vor lauter Bäumen nicht mehr:

Ich habe mehrere 1000 Datensätze aus einer txt in meine Datenbank eingelesen. Sehr einfache Struktur, drei Spalten: ID (auto_increment), Vorname (VARCHAR), Name (VARCHAR).

Abfrage über eine ID, kein Problem, Datensatz wird angezeigt. Abfrage über Name ebenso kein Problem, alle eindeutigen Datensätze werden angezeigt.
Jetzt aber das Merkwürdige: Geschieht die Abfrage über den Vornamen wurde am Anfang gar nichts angezeigt. Habe erst auf Groß- und Kleinschreibung getippt, aber die VARCHAR-Datensätze sind ja nicht case-sensitiv. Zum Testen habe ich dann einen Datensatz per Hand eingegeben, der wird gefunden (aber nur der, obwohl noch andere in Frage kämen).
Und wenn ich einen beliebigen, in Frage kommenden Datensatz in der Datenbank anklicke und auf OK drücke ohne irgendwas daran zu editieren, wird der dann auch plötzlich gefunden. Wieso???
Die Spalten „Vornamen“ und „Namen“ sind vollkommen identisch. Damit ich eine erfolgreiche Abfrage durchführen kann, müsste ich also rein theoretisch die kompletten Datensätze einmal in PHPmyAdmin anklicken und bestätigen oder wie?!

Mir ist das ein Rätsel und ich hoffe, mir kann da jemand weiterhelfen.

Falls das einen trivialen Grund hat, bitte nicht hauen!! Ich stehe einfach „auf’m Schlauch“…

Ich habe mehrere 1000 Datensätze aus einer txt in meine
Datenbank eingelesen. Sehr einfache Struktur, drei Spalten: ID
(auto_increment), Vorname (VARCHAR), Name (VARCHAR).

Abfrage über eine ID, kein Problem, Datensatz wird angezeigt.
Abfrage über Name ebenso kein Problem, alle eindeutigen
Datensätze werden angezeigt.
Jetzt aber das Merkwürdige: Geschieht die Abfrage über den
Vornamen wurde am Anfang gar nichts angezeigt. Habe erst auf
Groß- und Kleinschreibung getippt, aber die VARCHAR-Datensätze
sind ja nicht case-sensitiv. Zum Testen habe ich dann einen
Datensatz per Hand eingegeben, der wird gefunden (aber nur
der, obwohl noch andere in Frage kämen).
Und wenn ich einen beliebigen, in Frage kommenden Datensatz in
der Datenbank anklicke und auf OK drücke ohne irgendwas daran
zu editieren, wird der dann auch plötzlich gefunden. Wieso???
Die Spalten „Vornamen“ und „Namen“ sind vollkommen identisch.
Damit ich eine erfolgreiche Abfrage durchführen kann, müsste
ich also rein theoretisch die kompletten Datensätze einmal in
PHPmyAdmin anklicken und bestätigen oder wie?!

Mir ist das ein Rätsel und ich hoffe, mir kann da jemand
weiterhelfen.

Falls das einen trivialen Grund hat, bitte nicht hauen!! Ich
stehe einfach „auf’m Schlauch“…

Hallo,

das Problem könnte beim Import der Daten mittels *.txt-Datei entstanden sein. Da ich weder weiß, wie du die Daten im Text-File angeordnet hattest, noch, wie du sie importiert hast, vermute ich mal dies:

Das txt-File enthielt: Müller#Fritzchen
Du hast Satz für Satz eingelesen und mit explode ( ‚#‘, $string ); in ein Array gestellt und dann in die DB insertet, richtig?

Nun, ich kann dir keine Erklärung dafür geben, aber aus eigener Erfahrung weiß ich, dass in so einem Fall oft noch ein Leerzeichen an das letzte Feld gehängt wird. Dieses Leerzeichen wird aber beim Insert ebenfalls mit in den DB-Datensatz eingefügt. Wenn du nun nach „Fritzchen“ suchst, findest du ihn nicht, weil ja in der DB "Fritzchen " steht.

Du kannst dieses Leerzeichen vor dem Insert mit „TRIM“ entfernen oder evtl. in der Text-Datei noch ein „Leerfeld“ einfügen, also: Müller#Fritzchen#

Warum nun ein manueller Update dieses Leerzeichen entfernt, weiß ich nicht. Vielleicht kann ja einer der Experten hier erklären, woher dieses Leerzeichen genau kommt und warum es durch den manuellen Update wieder verschwindet, würde mich ebenfalls interessieren!

Übrigens: „gehauen“ wird hier niemand!

Gruß, Robi