Ich denke mal dein Datenbank ist nach so einem Prinzip aufgebaut:
Wenn du nun den Namen in der WHERE Anweisung benutzt, sucht er die komplette Datenbank nach dem namen ab, auch wenn schon einer gefunden wurde, da es möglich ist im Feld Name, doppelte Werte also zweimal z.B. User1 abspeichern lässt.
Wenn du nun aber die ID in der WHERE Anweisung benutzt, dann gibt es diese ID nur einmal. Denn wenn deine Datenbank so eingestellt ist wie auf meinem Screen, kannst du eine ID nicht doppelt eintragen. Daher weiß MySQL auch genau, es gibt diesen Wert nur einmal und muss nicht alles miteinander vergleichen.
Daher funktioniert das so schneller.
Also einfach beim Registrieren die ID gleich auslesen lassen, und dann immer die ID benutzen beim Updaten.
format(query,128,"INSERT INTO `accounts` (Name) VALUES ('%s')",username);
mysql_query(query);
PlayerInfo[playerid][pID] = mysql_insert_id();
Kleines Beispiel wie es im Register stock aussehen könnte.
Natürlich ändert sich die ID nicht, daher brauch man sie nicht abspeichern lassen bei jedem Disconnect. Sondern nur beim Connecten (Einloggen) auslesen.
Ich kann mich vielleicht in der erklärung bischen vertun aber so wurde es mir mal erzählt, ich weiß aufjedenfall das es per ID schneller als per Namen geht ![]()
Ich hoffe ich konnte helfen.
Mit freundlichen Grüßen,
Zunno