Bonjour, voilà plusieurs jours que je suis bloqué et je n'arrive pas à m'en dépêtrer...

Je vais essayer d'être le plus clair possible.

Je dois créer un formulaire pour modifier directement les usename et passwd de la table pg_shadow.
Qui ne sont modifiables qu'avec les requêtes suivantes :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ALTER USER ancienLogin RENAME TO nouveauLogin;
ALTER USER nouveauLogin WITH ENCRYPTED PASSWORD nouveauMotDePasse;

Cela étant dit, j'ai donc crée Utilisateur.class.php avec : (private $_idUtilisateur; private $_login; private $_motDePasse;),
Puis dans UtilisateurManager.class.php j'ai crée une : public static function update(Utilisateur $perso).
Cette fonction s'execute évidemment lorsque l'on clique sur "Modifier" une fois les nouveaux identifiants choisis.

Voici ma fonction Update :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public static function update(Utilisateur $perso)
 {
        $db = DbConnect::getDb();
 
        $q0=$db->prepare('SELECT usename as login FROM pg_shadow u WHERE usesysid = :idUtilisateur;');
        $q0->bindValue ( ':idUtilisateur', $perso->getIdUtilisateur());
        $res0= $q0->execute(); //Requête pour trouver l'ancien usename à modifier grâce à l'id.
        $ancien = $q0->fetch(PDO::FETCH_ASSOC);
 
        $q1 = $db->prepare("ALTER USER :precedent RENAME TO :login;"); //Requete qui sert à changer le login
        $q2 = $db->prepare("ALTER USER :login WITH ENCRYPTED PASSWORD :motDePasse;"); //Requete qui sert à changer le mdp
 
       	$q1->bindValue ( ':precedent', $ancien['login']);
       	$q1->bindValue ( ':login', $perso->getLogin());
        $q2->bindValue ( ':login', $perso->getLogin());
        $q2->bindValue ( ':motDePasse', $perso->getMotDePasse());
 
        $res1 = $q1->execute();
        $res2 = $q2->execute();
}

Et évidemment, rien ne marche...
Pourriez-vous m'aider ?

Cordialement