OVH Cloud OVH Cloud

pb syntaxe variable session

8 réponses
Avatar
Freegate
Bonjour,

la ligne suivante génère un message d'erreur dans l'exécution de mon code
PHP (serveur web : apache, sgbd : mysql)

$sql="INSERT INTO clients (nom_client) VALUES ('$_SESSION['nom']')";

Pouvez vous m'aider à corriger la syntaxe de cette ligne ?

Le message d'erreur est le suivant :

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting
T_STRING or T_VARIABLE or T_NUM_STRING in c:\program
files\easyphp1-7\www\test.php on line 8

Merci

8 réponses

Avatar
ticegestion
Bonjour,
"Freegate" a écrit dans le message de news:
41a3f160$0$21811$
Bonjour,

la ligne suivante génère un message d'erreur dans l'exécution de mon code
PHP (serveur web : apache, sgbd : mysql)

$sql="INSERT INTO clients (nom_client) VALUES ('$_SESSION['nom']')";

Pouvez vous m'aider à corriger la syntaxe de cette ligne ?
$sql="INSERT INTO clients (nom_client) VALUES ('".$_SESSION['nom']."')";

ou alors à la place d'encadrer $SESSION['nom'] par des ' ça fonctionnerait
peut être mieux avec des ` (AltGr+7)

Cordialement
Fred
http://www.ticegestion.com

Avatar
laurent sturm
Salut,
$sql="INSERT INTO clients (nom_client) VALUES ('$_SESSION['nom']')";

effectivement il y a une erreur de syntaxe, tu dervrais plutot écrire:

$sql="INSERT INTO clients (nom_client) VALUES ('".$_SESSION['nom']."')";

voila @+
Avatar
gmi2a
X-No-Archive: yes
Restrict: no-external-archive
"Freegate" a écrit dans le message de
news:41a3f160$0$21811$
$sql="INSERT INTO clients (nom_client) VALUES ('$_SESSION['nom']')";


Bonsoir,

Et que donne :

$sql="INSERT INTO clients (nom_client) VALUES ($_SESSION[nom])";

Cordialement
--
G.M.

Avatar
poji
Freegate wrote:
Bonjour,

la ligne suivante génère un message d'erreur dans l'exécution de mon code
PHP (serveur web : apache, sgbd : mysql)

$sql="INSERT INTO clients (nom_client) VALUES ('$_SESSION['nom']')";

Pouvez vous m'aider à corriger la syntaxe de cette ligne ?

Le message d'erreur est le suivant :

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting
T_STRING or T_VARIABLE or T_NUM_STRING in c:program
fileseasyphp1-7wwwtest.php on line 8

Merci


Petite correction :
$sql="INSERT INTO clients (nom_client) VALUES ('${_SESSION['nom']}')";

Remarques bien la présence des { }.
PhP sait remplacer les variables entre deux " mais a du mal avec les
tableaux, les { } permettent de lui mâcher le travail.

Ceci dit, utilises plutôt :
$sql="INSERT INTO clients (nom_client) VALUES ('".$_SESSION['nom']."')";
(concaténation)

pour pouvoir y rajouter un addslashes (à moins d'être absolument sûr que
ta variable soit anti-slashée) :
$sql="INSERT INTO clients (nom_client) VALUES
('".addslashes($_SESSION['nom'])."')";

++
PoJi

Avatar
Greg
On 25 Nov 2004 02:56:01 GMT
"Freegate" wrote:

Bonjour,


Bonjour,

$sql="INSERT INTO clients (nom_client) VALUES ('$_SESSION['nom']')";


$sql="INSERT INTO clients(nom_client) VALUES('{$_SESSION['nom']}')";

Je trouve ça plus lisible que les versions avec concaténation,
maintenant c'est à toi de voir.

Greg

Avatar
marc.quinton-PAS-DE-
Greg wrote:


$sql="INSERT INTO clients(nom_client) VALUES('{$_SESSION['nom']}')";


moi j'aime bien ca aussi :

$sql = sprintf("INSERT INTO clients(nom_client) VALUES('%s')", $_SESSION['nom']);

y'a cette méthode aussi qui est fort sympathique :

# soit un enregistrement obtenu depuis une requete SQL ou d'un formulaire
$record = array(
'nom' => 'marcel',
'email' => '',
'info' => '...'
);

tu peux realiser simplement une fonction de ce genre (incomplete):

$sql = sql_build_insert('clients', $record);
$db->query($sql);

function sql_build_insert($table, &$record){

# 2 tableaux qui seront remplis dans la boucle foreach();
# verifier (je ne sais pas comment) le contenu de l'enregistrement
# il faudrait connaitre le type (string ou entier de chaque attribut,
# cela sort un peu du contexte ... cela se fait facilement avec des classes
#
foreach ($record as $key=>$val){
$values[] = addslashes($val); # attention si valeur numerique ou entiere, il faut ''
$keys[] = $key;
}

$sql = sprintf("INSERT INTO %s(%s) VALUES(%s)",
$table, join(',', $keys), join(',', $values));
return $sql;
}

Avatar
Vincent Jacques
Bonjour,

la ligne suivante génère un message d'erreur dans l'exécution de mon code
PHP (serveur web : apache, sgbd : mysql)

$sql="INSERT INTO clients (nom_client) VALUES ('$_SESSION['nom']')";


$sql="INSERT INTO clients (nom_client) VALUES ('{$_SESSION["nom"]}')";
(insertion du contenu de la variable {$toto} dans une chaine)

ou

$sql="INSERT INTO clients (nom_client) VALUES ('".$_SESSION["nom"]."')";
(concatenation de chaines)

--
Vincent Jacques

"Une grande révolution ne peut naître que d'un grand sentiment d'amour."
Ernesto Che Guevara

Avatar
Freegate
"laurent sturm" a écrit dans le message de news:
41a58abb$0$9064$
Salut,
$sql="INSERT INTO clients (nom_client) VALUES ('$_SESSION['nom']')";

effectivement il y a une erreur de syntaxe, tu dervrais plutot écrire:

$sql="INSERT INTO clients (nom_client) VALUES ('".$_SESSION['nom']."')";

voila @+


merci beaucoup à tous, ça marche