Bonjour,
Désolée, je me suis trompée de forum, j'ai posé dans mysql. Donc je reposte ici...
Voilà mon soucis:
J'ai une base de données en mySQL gérée par phpmyadmin.
Je code en php le traitement du site.
Dans ma base j'ai une table tGroupeutilisateur qui fournit des indications sur les droits des utilisateurs. Dans cette table, j'ai les droits qui sont sont forme de booléens. Au départ jamais mis des tinyint(1). Mais quand je faisais une requête directement dans phpmyadmin
je recevais la valeur 'admin' comme réponse. Voici la requête:
Depuis que j'ai changé le type de champs en bit, cette même requête me renvoie à présent la bonne valeur, à savoir 1.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT 'admin' FROM 'tGroupeutilisateur' WHERE id =1
Par contre avec mon code php, la valeur renvoyée et toujours le nom du champs et pas sa valeur. Voici mon code:
Dans ce code, la valeur de idgroupe est bien 1 et la valeur de la variable $droit est bien 'admin'. Par contre, le echo m'affiche 'admin' et pas 1.
Code : 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 // récupère de la clé du groupe utilisateur $req_cle = $bdd_pdo->query("SELECT tGroupeutilisateur_id AS idgroupe FROM tUtilisateur WHERE identifiant ='" .$identifiant. "' AND motdepasse ='" .$motdepasse."'") or die(print_r($bdd_pdo->errorInfo())); $data =$req_cle->fetch(); $req_cle->closeCursor(); // récupère de les droits dans la table groupe utilisateur if($data['idgroupe']) { $idgroupe=$data['idgroupe']; $req_droit=$bdd_pdo->query("SELECT '" .$droit. "' AS valdroit FROM tGroupeutilisateur WHERE id ='" .$idgroupe. "'") or die(print_r($bdd_pdo->errorInfo())); $val_droit =$req_droit->fetch(); $req_droit->closeCursor(); // si le droit est ok retourne vrai echo $val_droit['valdroit']; return $val_droit['valdroit']; }
Et du coup le return est toujours ok, même quand la valeur de 'admin' est à 0.
Je pense à un problème de type de variable passée dans la requête (idGroupe qui est un entier et que je passe en chaine de caractère par exemple). Mais je ne sais pas comment gérer et je ne suis pas sure que le problème vienne bien de là.
Quelqu'un aurait-il une idée, s'il vous plait?
Merci.
Partager