Also so sehe ich generel in der Verwendung keinen Fehler normal sollte die richtige id übergeben werden.
Wenn du jedoch schreibst das dieses Problem beim speichern auftritt würde ich das weg lassen es ist sowieso unsinnig.
Ich kann dir jedoch noch paar kleine Tipps geben.
beim auslesen von einem Datensatz benutzte noch LIMIT 1 das sorgt das erbeim ersten fund aufhört auszulesen und zum splitten verwende sscanf.
Warum ist schneller und weniger umständlich
sscanf(data,"p<|>s[40]ddd",Spieler[spareid][pPasswort],Spieler[spareid][pLevel],Spieler[spareid][pKills],Spieler[spareid][pDeaths]);
SetPlayerScore(spareid, Spieler[spareid][pLevel]);
man kann auch dne specifer e dazu holen nur buggt dies ab und zu.