PHP - Oracle - create table

PHP - Oracle - create table - PHP - Programmation

Marsh Posté le 26-03-2006 à 18:41:58    

Slt,
 
Mon problème est simple : je souhaite créer une table Oracle en PHP sachant que le nom de la table est une variable (id_session)
 
$id_session = "test";  
 
J'ai essayé plusieurs syntaxes mais rien n'y fait :
 
$query_test = 'create table '$id_ses' (test varchar2(40))';
 
$query_test = 'create table "$id_ses" (test varchar2(40))';
 
...
 
Qqun peut-il m'aider sur la syntaxe à employer ?
 
Merci d'avance,
 
Juan

Reply

Marsh Posté le 26-03-2006 à 18:41:58   

Reply

Marsh Posté le 27-03-2006 à 10:35:57    

Code :
  1. $query_test = "create table ".$id_ses." (test vrachar2(40))";


Heu le " au début de ma chaine ça correspond a "
C'est remplacé automatiquement apparemment...

Reply

Marsh Posté le 27-03-2006 à 14:31:57    

Je verrais plutôt :
$query_test = "create table "$id_ses" (test varchar2(40))";
 
Pour rappel, une chaîne entre quotes ne permet pas d'interpréter les variables à l'intérieure alors qu'entre guillemets si...

Reply

Marsh Posté le 27-03-2006 à 15:51:26    

rufo a écrit :

Je verrais plutôt :
$query_test = "create table "$id_ses" (test varchar2(40))";

 

Pour rappel, une chaîne entre quotes ne permet pas d'interpréter les variables à l'intérieure alors qu'entre guillemets si...

 

Reply

Marsh Posté le 27-03-2006 à 15:57:26    

$query_test = "create table "$id_ses" (test varchar2(40))"; ca ne peut pas marcher...
 
c'est :
 
$query_test = "create table \"$id_ses\" (test varchar2(40))";
ou
$query_test = 'create table "'.$id_ses.'" (test varchar2(40))';

Message cité 1 fois
Message édité par Woutcha le 27-03-2006 à 16:01:29
Reply

Marsh Posté le 27-03-2006 à 16:28:16    

Woutcha a écrit :

$query_test = "create table "$id_ses" (test varchar2(40))"; ca ne peut pas marcher...
 
c'est :
 
$query_test = "create table "$id_ses" (test varchar2(40))";
ou
$query_test = 'create table "'.$id_ses.'" (test varchar2(40))';


 
 
Malheureusement, ces syntaxes ne fonctionnent pas (je pense qu'elles fonctionnent lorsqu'on utilise MySQL).
 
Juan

Reply

Marsh Posté le 27-03-2006 à 16:45:30    

La syntaxe est bien la bonne pour creer une table sous oracle...
 
As-tu un message d'erreur?
As-tu fais un print $query_test pour verifier que tu avais bien
la chaine attendue?

Reply

Marsh Posté le 27-03-2006 à 17:20:39    

Woutcha a écrit :

La syntaxe est bien la bonne pour creer une table sous oracle...
 
As-tu un message d'erreur?
As-tu fais un print $query_test pour verifier que tu avais bien
la chaine attendue?


 
 
Je viens de tester les 2 syntaxes :
 
1)$create_pws_prepro_sc = "create table "$id_ses" (test varchar2(40))";  
 
J'ai une fenêtre blanche et rien ne se passe : la table n'est pas créee
 
 
2)$create_pws_prepro_sc = 'create table "'.$id_ses.'" (test varchar2(40))';
 
Pas d'erreur, voici le print de $create_pws_prepro_sc  
 
create table "pws_tmp_61435619" (test varchar2(40))
 
mais la table n'est toujours pas créee.
 
Merci pour ton aide
 
Juan

Reply

Marsh Posté le 27-03-2006 à 17:45:57    

juanito64 > Est ce que t'as bien exécuté la requette aprés l'avoir mise dans "$create_pws_prepro_sc" ? En bref, c'est quoi le reste du code où tu utilise ton "$create_pws_prepro_sc"?
 
Si tu t'es contenté de la ligne au dessus sans riend de plus, alors c'est normal que rien ne se soit passé.

Reply

Marsh Posté le 27-03-2006 à 17:51:48    

omega2 a écrit :

juanito64 > Est ce que t'as bien exécuté la requette aprés l'avoir mise dans "$create_pws_prepro_sc" ? En bref, c'est quoi le reste du code où tu utilise ton "$create_pws_prepro_sc"?
 
Si tu t'es contenté de la ligne au dessus sans riend de plus, alors c'est normal que rien ne se soit passé.


 
omega2,
 
Le code de la page est assez long mais j'ai bien exécuté la requête :  
 
$create_pws_prepro_sc = 'create table "'.$id_ses.'" (test varchar2(40))';
 
 
echo $create_pws_prepro_sc ;
 
                                     
$sth_pws_prepro_sc = oci_parse($conn, $create_pws_prepro_sc);
if (!$sth_pws_prepro_sc) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
 
 
 
$results_pws_prepro_sc = oci_execute($sth_pws_prepro_sc, OCI_DEFAULT);
if (!$results_pws_prepro_sc) {
$e = oci_error($sth_pws_prepro_sc);
print htmlentities($e['message']);
exit;
}

Reply

Marsh Posté le 27-03-2006 à 17:51:48   

Reply

Marsh Posté le 29-03-2006 à 09:15:52    

si tu fais
 

Code :
  1. $sql = "create table "'.$sess_id.'" (test varchar2(40))";


 
tu ouvres les guillemets, tu les fermes puis tu les rouvres en simple
quote et tu place ta variable et tu les refermes et tu rouvres une
chaine en double quote, c'est pas normal ya pas de concaténation.
 

 


j'ose supputer que la syntaxe voulue était celle la :
 

Code :
  1. $sql = "create table '".$sess_id."' (test varchar2(40))";


 
là les simples quotes sont avant la fin des double, et apres la
variable la simple quote et refermée apres le début de la fin de la
chaine
 
les simples quotes sont donc interprétées comme du texte et non comme l'ouverture/fermeture d'une chaine
 
tu auras donc $sql qui vaut "create table 'valeur contenue dans ta sess_id' (test varchar2(40))"
 

 


Ceci dit il ne doit pas y avoir de quotes autour du nom de la table
lors de sa création donc la syntaxe qu'il faut est celle que j'ai
donnée plus haut : tu ouvres une chaine en double quotes tu la refermes
avant la variable, ti concatène ta variable tu rouvres les doubles
quotes et tu fini :
 

Code :
  1. $sql = "create table ".$sess_id." (test varchar2 (40))";


 
Ainsi ta variable se trouve en dehors des quotes et ne sera donc pas interprétée comme une chaine mais bien comme une variable.

Reply

Sujets relatifs:

Leave a Replay

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