Problème avec une requête SQL dynamique
Posté : 09 sept. 2011, 11:52
Bonjour,
J'ai une fonction qui me permet de renvoyer tous les noms de champs d'une tables sql en excluant les clés primaires.
Je voudrais alors pouvoir exploiter le retour de cette fonction pour générer une requête SQL plus ou moins dynamique dans le sens ou celle-ci évolue selon la table en question.
Cette table contient un ensemble de champs qui me permettent de savoir si tel utilisateur à les permissions d’accéder/exécuter à la fonctionnalitée associée.
Pour le moment lorsque je teste ceci :
Actuellement j'ai ceci:
La où je bloque pour remplacer ces valeurs par celles récupérées préalablement, c'est avec les ',' dans ma requête.
Je pourrais faire:
Seulement j'aurais une erreur SQL car mon dernier champ aurait une ','.
Auriez vous des idées?
En vous remerciant par avance.
Damien B.
J'ai une fonction qui me permet de renvoyer tous les noms de champs d'une tables sql en excluant les clés primaires.
Je voudrais alors pouvoir exploiter le retour de cette fonction pour générer une requête SQL plus ou moins dynamique dans le sens ou celle-ci évolue selon la table en question.
Cette table contient un ensemble de champs qui me permettent de savoir si tel utilisateur à les permissions d’accéder/exécuter à la fonctionnalitée associée.
Pour le moment lorsque je teste ceci :
$fields = get_fields_table_rights();
while (list(, $value) = each($fields)) {
echo "$value <br />\n";
}
J'obtiens bien la liste des noms de champs:Je souhaiterais maintenant pouvoir faire une requête avec les noms des champs que je récupère.modify_news
manage_users
manage_history
Actuellement j'ai ceci:
$query = @mysqli_query($bdd, "select modify_news, manage_users, manage_history
from rights r, groups g, users u
where u.groupname = g. groupname
and r.permission = g.permission
and u.login = '".$login."';");
J'ai donc les noms de mes champs écris en dure. La où je bloque pour remplacer ces valeurs par celles récupérées préalablement, c'est avec les ',' dans ma requête.
Je pourrais faire:
$fields = get_fields_table_rights();
$table_fields ='';
while (list(, $value) = each($fields)) {
$table_fields .= $value . ", ";
}
$query = @mysqli_query($bdd, "select ".$table_fields."
from rights r, groups g, users u
where u.groupname = g. groupname
and r.permission = g.permission
and u.login = '".$login."';");
Seulement j'aurais une erreur SQL car mon dernier champ aurait une ','.
Auriez vous des idées?
En vous remerciant par avance.
Damien B.