erreur de concatenation pour creer une requete SQL

Eléphant du PHP | 108 Messages

21 mars 2006, 12:04

j'essai de concatener une requete mais je me perd dans tous ces " et ' :shock:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in F:\www\wamp\www\exoPourLesNuls\chap13\login.php on line 184
$today =date("Y-m-d");
$champs_str = implode(",",$champs);
$valeurs_str= implode('","',$valeurs);
$champs_str.=",create_date";
$valeurs_str.='"'.","'"'.$today;
$champs_str.=",password";
$valeurs_str.='"'.","."md5"."('".$password."');
$sql="INSERT INTO $table_name ";
$sql.="(".$champs_str.")";
$sql.=" VALUES ";
$sql.="(".'"'.$valeurs_str.")";
mysqli=query($cnx,$sql)
 or  die (mysqli_error($cnx));
J'arive pas avoir l'erreur :cry:

et aussi j'ai vu des choses de ce type
$$champ = $valeur;
ca sert a quoi?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 mars 2006, 12:18

Dans ces cas là, utilise un "echo $sql;" ça te permettra de voir rapidement ou est ce que ta requête pêche :)

A premiere vue, tu peux déjà modifier ceci :
$valeurs_str= implode("', '",$valeurs);  // ce sont des apostrophes qu'il faut autour des valeurs
$valeurs_str= "'" . $valeurs_str ."'"; // j'ajoute tout de suite celle de début et de fin pour ne pas les oublier
...
$champs_str.=",create_date"; // nom du champ
$valeurs_str.=", '" . $today . "'"; // valeur non numérique (donc entre apostrophes)
$champs_str.=",password";  // nom du champ
$valeurs_str.=", '" . md5($password) . "'"; // valeur entre apostrophe

$sql="INSERT INTO $table_name "; 
$sql.="(".$champs_str.")"; 
$sql.=" VALUES "; 
$sql.="(" .$valeurs_str .")"; 
Pour le $$champ, c'est comme si tu appliquais le $ sur la valeur contenu dans $champ :
$var = "toto";
$champ = "var";
echo $$champ; // affiche "toto". En gros : $$champ = ${$champ} = ${var} = "toto" :)