Bonjour à tous,
Mon problème concerne l'enregistrement et l'appel d'une requête depuis une table.
Une fois l'insert effectué, je souhaite utiliser cette requête de façon dynamique. Je m'explique :
J'enregistre dans la table 'requete' la requête suivante (dans le champ 'req') :
SELECT valeur1, valeur2, valeur3 FROM exemple WHERE societe=:param1 AND utilisateur=:param2 AND valide=:param3
Et les paramètres associés à cette requête, (dans le champ 'param'), à savoir :
SOCIETE : ID_USER : "A"
Mon idée : j'ai un modèle (un traitement) contenu dans une page PHP (traitement.php). Ce modèle ne bouge pas. Le seul élément qui diffère est ma requête (et ses paramètres associés). Cf. ci-dessus.
Je stocke donc chaque requête et ses paramètres dans une table 'requete' dont le modèle est présenté ci-suit, à savoir :
-----------------------------------------------------------------------------------------------------
Structure de la table 'requete'
------------------
id | id_user | req | param | date
Contenu de la table 'requete'
------------------
id
1
id_user
11
req
SELECT valeur1, valeur2, valeur3 FROM exemple WHERE societe=:param1 AND utilisateur=:param2 AND valide=:param3
param
SOCIETE : ID_USER : "A"
date
2015-02-25 14:39:15
-----------------------------------------------------------------------------------------------------
Voici mon code afin d'y voir plus clair :
Lorsque je lis mon enregistrement, SOCIETE, ID_USER (qui sont des constantes) ne sont pas remplacées ... et ma requête est considérée comme une "simple" chaîne.
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 $ma_requete = $bdd->prepare('SELECT * FROM requete WHERE id_user= :repere'); $ma_requete->execute(array( 'repere' => $_GET['id'], )); $i = 0; while ($donnees_ma_requete = $ma_requete->fetch()) { $requete[$i] = $donnees_ma_requete['req']; $param[$i] = $donnees_ma_requete['param']; echo $requete[$i] . "<br>"; // affiche : SELECT valeur1, valeur2, valeur3 FROM exemple WHERE societe=:param1 AND utilisateur=:param2 AND valide=:param3 echo $param[$i] . "<br>"; // affiche : 'param1' => SOCIETE ,'param2' => ID_USER ,'param3' => "A", $i++; } for ($debut = 0; $debut < 1; $debut++) { //DEBUT LISTE PARAM $s = $param[$debut]; $tab = explode(':', $s); $nbre_param = count($tab); //FIN LISTE PARAM $liste_param[$debut] = ""; for ($debut_param = 1; $debut_param < $nbre_param + 1; $debut_param++) { $valeur[$debut_param] = ExtractChamp($param[$debut], $debut_param, ":"); // extraction des valeurs du champ 'param' avec le séparateur ":" $liste_param[$debut] .= "'param" . $debut_param . "' => $valeur[$debut_param],"; } } $reponse[0]->execute(); $reponse[0]->execute(array($liste_param[0])); while ($result = $reponse[0]->fetch()) { echo $result['valeur1'] . "<br>"; echo $result['valeur2'] . "<br>"; // ........... }
Je suis allé voir du côté de la fonction eval() mais sans succès.
Auriez-vous une solution à m'apporter ?
Merci d'avance pour votre aide
Partager