Comment inclure une variable dans une requête SQL ?

Comment inclure une variable dans une requête SQL ? - PHP - Programmation

Marsh Posté le 07-08-2005 à 14:31:06    

Salut,
Je viens d'oublier un truc con comme mes pieds... J'ai un requête SQL et j'aimerais inclure une variable à l'intérieur. La voici :
$req="SELECT * FROM basex where num='$num'";
A l'endroit ou le x est en gras, j'aimerais le remplacer par la variable $base, qui donne le nom de la base. Par exemple, si $base=test;, alors la requête en echo serait donc  
$req="SELECT * FROM basetest where num='$num'";.
 
Vous comprenez ?
 
Merci :)
 
a+
Greg.

Reply

Marsh Posté le 07-08-2005 à 14:31:06   

Reply

Marsh Posté le 07-08-2005 à 14:33:12    

c'est pas la base que tu attaqueras dans ta requete mais une table d'une base précise.

Reply

Marsh Posté le 07-08-2005 à 14:37:28    

et la solution n'a rien à voir avec du SQL, c'est du PHP pur

Reply

Marsh Posté le 07-08-2005 à 14:41:11    

gatsusat a écrit :

c'est pas la base que tu attaqueras dans ta requete mais une table d'une base précise.


Oui je sais, je me suis un peu emmeler les pinceaux, désolé :)
 
Et je sais que la solution est en PHP (c'est pour ca que j'ai posté dans ce sous-forum), je donne l'exemple de la requête SQL juste comme ca...
 
Décidement, vous avez un problème avec les exemples dans ce forum :D :lol:  
 
Pourriez vous me donner juste la solution svp ? Merci ;)


Message édité par Docteur G le 07-08-2005 à 14:41:50
Reply

Marsh Posté le 07-08-2005 à 14:43:35    

$table="matable";, alors la requête en echo serait donc  
$req="SELECT * FROM $table where num='$num'";
 
ou enconcaténant les chaines :  
$req="SELECT * FROM ".$table. "where num='".$num."'";
 
je préfère la deuxième solution, je la trouve plus explicite, et me permet de metttre des calcule au milieu
exemple :  
 
$req="SELECT * FROM ".(($table=="truc" )? "machinbidule" : "bidulechouette" ). "where num='".$num."'";

Reply

Marsh Posté le 07-08-2005 à 14:57:05    

gatsusat a écrit :

$table="matable";, alors la requête en echo serait donc  
$req="SELECT * FROM $table where num='$num'";
 
ou enconcaténant les chaines :  
$req="SELECT * FROM ".$table. "where num='".$num."'";
 
je préfère la deuxième solution, je la trouve plus explicite, et me permet de metttre des calcule au milieu
exemple :  
 
$req="SELECT * FROM ".(($table=="truc" )? "machinbidule" : "bidulechouette" ). "where num='".$num."'";


 
Ok merci, mais j'ai une autre question, d'ordre plus général.
J'ai ca : $numerotable = $_GET['numerotable']; et j'aimerais "coller" le numéro en $_GET au nom de la table.  
Il me semble qu'il y a une histoire de "+" mais j'ai completement oublié.  
En gros, j'aimerais que la variable "$nomtable" soit "lenomdematable + $numerotable" collés.  
J'ai en effet dans ma base SQL des tables appelée par exemple lenomdematable1, lenomdematable2, lenomdematable3, lenomdematable4...
Donc, si on charge les variables ca donne ca :
si en $_GET, numerotable = 51 par exemple, alors $nomtable = lenomdematable51.
C'est dur à expliquer désolé :)

Reply

Marsh Posté le 07-08-2005 à 16:08:44    

en php le signe de concaténation est le point:   .
 
$var1="test";
$var2=" de merde";
$var3=$var1.$var2;
 
$var3 -> test de merde

Reply

Marsh Posté le 07-08-2005 à 16:43:05    

xtof_83 a écrit :

en php le signe de concaténation est le point:   .
 
$var1="test";
$var2=" de merde";
$var3=$var1.$var2;
 
$var3 -> test de merde


Merci beaucoup, tu me tires un fiere chandelle du pied :D :D :D

Reply

Marsh Posté le 07-08-2005 à 17:46:40    

tu peux aussi utiliser la virgule, je crois que c'est plus rapide

Reply

Marsh Posté le 07-08-2005 à 17:59:31    

pas pour une concaténation ...


Message édité par KangOl le 07-08-2005 à 18:00:01

---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 07-08-2005 à 17:59:31   

Reply

Marsh Posté le 07-08-2005 à 18:07:46    

ritzle a écrit :

tu peux aussi utiliser la virgule, je crois que c'est plus rapide


 
Plus rapide...euh.. :pt1cable:  :pt1cable:

Reply

Marsh Posté le 09-08-2005 à 14:53:20    

OK.
Alors supposons que tes tables vont de 1 à 42 :
 
tu fais :
 

Code :
  1. <?
  2. $numtable = intval($_GET['numtable']);
  3. // Deja, le intval est une bonne protection contre les injections de code
  4. if ($numtable < 1 OR $numtable > 42)
  5.    die('Une erreur s'est produite');
  6. // pas besoin de dire que la table machin n'existe pas...
  7. else $req = 'SELECT * FROM matable'. $numtable .'WHERE blabla';
  8. ?>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed