J'ai compris que cela était dû à l'utilisation du nom d'utilisateur pour obtenir l'identifiant, ce qui signifie que le fait de changer le nom d'utilisateur signifiait qu'aucun identifiant ne pouvait être récupéré. J'ai donc changé mon code et ajouté un champ caché pour l'identifiant dans mon formulaire.
Ancien code :
$user->username = $db->mysql_prep($_POST["username"]);
$user->hashed_password = ($_POST["password"]);
$user->firstname = $db->mysql_prep($_POST["firstname"]);
$user->lastname = $db->mysql_prep($_POST["lastname"]);
$user_query = $user->find_user_by_username($user->username);
$user->id = $user_query["id"];
$result = $user->change_user_by_id($user);
unset($user);
remplacé par le nouveau code :
$user->username = $db->mysql_prep($_POST["username"]);
$user->hashed_password = ($_POST["password"]);
$user->first_name = $db->mysql_prep($_POST["first_name"]);
$user->last_name = $db->mysql_prep($_POST["last_name"]);
$user->id = $db->mysql_prep($_POST["id"]);
$result = $user->change_user_by_id($user);
unset($user);