|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : avril 2004 Messages : 205 ![]() |
Bonjour,
Dans mon programme php, je voudrais construire certaines requêtes à partir de "blocs" figurant dans une table "MODULES_REQUETES". Je m'explique : 1. Ma table "MODULES_REQUETES" contient les chaînes suivantes : "WHERE champ2=....." "LEFT JOIN champ1..." etc... 2. Je récupère certains de ces champs et je les place dans la variable $conditions. 3. Je construit ma requête $requete="SELECT..... ".$conditions; Mais j'ai un problème : alors que php remplace naturellement, dans une requête saisie normalement, '$var' par 'valeur de la variable $var', il ne le fait plus lorsque j'utilise la méthode décrite ci-dessus ($var est alors interprété comme la chaîne "$var"). C'est dommage car le fait de construire une requête à partir d'une requête me simplifierait parfois la vie... J'ai donc deux questions : - quelqu'un a t'il compris ce que je viens d'essayer de décrire (j'ai eu du mal) ? - si oui : ce quelqu'un a t'il une réponse ? Merci par avance Philippe |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
tu peux utiliser la fonction http://php.net/sprintf avec des requêtes de ce genre :
Code SQL :
SELECT * FROM `table` WHERE id = '%s'
__________________
Modérateur PHP |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : avril 2004 Messages : 205 ![]() |
Merci.
Mais je n'ai pas bien compris ton idée. Voici ma situation : 1er cas : $req= "select... where id='$monid' " : ça marche. 2ème cas : - ma table MODULES_REQUETES contient, dans un champ varchar, la chaîne " where id= '$monid' " - je lance une requête pour récupérer ce champ dans $condition - $req="select...".$condition Ca ne marche plus car il recherche la chaîne "$monid" et non plus la valeur de $monid. Comment utiliser sprintf pour résoudre ce pb ? A plus Phil |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() ![]() |
oui c'est normal, quand tu recharge ta requete depuis MySQL il prend $monid pour du text et non comme du code PHP
il faudrait que tu utilise des mots clefs ex : {ID} et qu'aprés avec un regexp tu remplace les mots clefs par les bonnes valeurs Edit : essaye en mettant
__________________
Gnarf ! www.uni-d.net (Wamp MSS) - Mon C.V. - Mon Blog .NET {VS 2010 && LINQ} && PHP {(Zend Studio || Notepad++) && (WAMP || WAMP mss)} && Multimédia {Flash CS5 && Photoshop CS5} Pensez au TAG
|
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : avril 2004 Messages : 205 ![]() |
- est que "WHERE id='${monid}'" est la chaîne qui doit être dans ma base ?
- comment dois je utiliser regexp pour qu'au final, php comprenne '$monid' Merci |
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() Jota Alves Inscription : janvier 2006 Messages : 263 ![]() |
slt...
si j´ai bien compris, tu veus prendre le resultat, qui est dans une colonne, pour ensuite faire une nouvelle requete? si oui, passe par une requête préparé. Code :
|
||
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : avril 2004 Messages : 205 ![]() |
Merci pour ta réponse, ma mon problème n'est pas tout à fait là.
Le voici : Code version 1 : $req="select ... where '$info'=...." Dans ce cas, php interprète $info comme une variable. Code version 2 : $req="select ....".$condition $condition contient la chaîne "where '$info'= ". Mais cette chaîne ayant été récupérée par une requête et non pas saisie dans mon fichier php, php n'interprète pas '$info' comme une variable mais comme une chaîne. Je pense que UNi[FR] a cerné mon pb, mais je n'arrive pas à comprendre comment utiliser sa réponse. Phil |
|
|
00
|
|
|
#8 | ||
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
voilà un exemple d'utilisation de sprintf
Code :
__________________
Modérateur PHP |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com