Vinzenz Mai: Seltsames verhalten bei mysql_fetch_object()

Beitrag lesen

Hallo Tobias,

ich habe hier grad ein sehr merkwürdiges Problem. Mit folgendem Code realisiere ich einen Login in:

$sql="SELECT * FROM user WHERE nick='".$_POST['nick']."' AND passwort='".$_POST['pass']."';";

Du solltest [link:http://www.php.net/manual/de/function.mysql-real-escape-string.php@title=mysql_real_escape_string()] auf Benutzereingaben anwenden, vorher in Abhängigkeit von der Konfiguration von magic quotes gpc [link:http://www.php.net/manual/de/function.stripslashes.php@title=stripslashes].

$ergebnis=mysql_query($sql) or die(mysql_error());

if(mysql_fetch_object($ergebnis))

Hier rufst Du das erste Ergebnis Deiner Abfrage ab, sofern es überhaupt eines gibt. Den Inhalt dieses Ergebnisses wirfst Du weg.

{while($row=mysql_fetch_object($ergebnis))

Diese Anweisung weist im Erfolgsfall die zweite und in weiteren Durchläufen die folgenden Zeile Deiner Ergebnismenge der Variablen $row zu. In einem guten Loginsystem sollte die gleiche Kombination von Benutzernamen und Passwort nur einmal vorkommen. Wunderst Du Dich immer noch, dass Du hier nie das erhältst, was Du erwartest?


> Irgendwelche Ideen?  
  
Wirf das erste Ergebnis nicht weg, sondern weise es der Variablen $row zu. Überprüfe die Variable $row und arbeite im Erfolgfall mit dieser weiter. Auf Deine while-Schleife kannst Du getrost verzichten.  
  
  
Freundliche Grüße  
  
Vinzenz