Bonjour,

Je cherche depuis trop longtemps une erreur Mysql, alors je frappe à la porte d'une âme charitable qui m'aidera.

Je veux remplir une table Individus :

CREATE TABLE IF NOT EXISTS `Individus`
( 
  `ind` smallint(5) unsigned NOT NULL auto_increment,
  `gedcom` varchar(10),
  `sosa` smallint(5),
  `nom` varchar(25),
  `prenom` varchar(25),
  `sexe` varchar(3),
  `date_naissance` varchar(15),
  `lieu_naissance` varchar(25),
  `date_deces` varchar(15),
  `lieu_deces` varchar(25),
  `gedcom_pere` varchar(10),
  `gedcom_mere` varchar(10),
   PRIMARY KEY (`ind`)
);

Je renseigne mes variables dans mon prog PHP :

$cle_indi, $sosa, $nom, $prenom, $sexe, $date_n, $lieu_n, $date_d, $lieu_d, $cle_pere, $cle_mere

Je les affiche avant l'insert pour vérifier, cela donne :

Enregistrement individus 2I-0-LABROUSSE-Jeanne-F-Calcul 1756 -0-0-0-3I-4I

Et quand je fais l'insert suivant dans mon programme :

$SqlTmp = "INSERT INTO Individus (gedcom, sosa, nom, prenom, sexe, date_naissance, lieu_naissance, date_deces, lieu_deces, gedcom_pere, gedcom_mere) 
	 VALUES ($cle_indi, $sosa, $nom, $prenom, $sexe, $date_n, $lieu_n, $date_d, $lieu_d, $cle_pere, $cle_mere)";
mysql_query($SqlTmp) or  die('Erreur de base : '.mysql_error());


J'ai l'erreur suivante :

Erreur de base : Erreur de syntaxe près de '1756 , 0, 0, 0, 3I, 4I)' à la ligne 2

Je reprends mon insert en remplaçant les variables par leur valeur pour le lancer sous PhpMyAdmin :

INSERT INTO Individus (gedcom, sosa, nom, prenom, sexe, date_naissance, lieu_naissance, date_deces, lieu_deces, gedcom_pere, gedcom_mere) 
 VALUES ('2I', '0', 'LABROUSSE', 'Jeanne', 'F', 'Calcul 1756 ', '0','0' ,'0' , '3I', '4I')


Et là l'enregistrement se fait comme il faut !!

Pouvez vous m'indiquer où se trouve mon erreur ??
Merci beaucoup.
Il manque des apostrophes dans ton insert, tu devrais écrire :
$SqlTmp = "INSERT INTO Individus (gedcom, sosa, nom, prenom, sexe, date_naissance, lieu_naissance, date_deces, lieu_deces, gedcom_pere, gedcom_mere) 
	 VALUES ($cle_indi, $sosa, '$nom', '$prenom', '$sexe', '$date_n', '$lieu_n', '$date_d', '$lieu_d', $cle_pere, $cle_mere)";
fzf a écrit :
Il manque des apostrophes dans ton insert, tu devrais écrire :
$SqlTmp = "INSERT INTO Individus (gedcom, sosa, nom, prenom, sexe, date_naissance, lieu_naissance, date_deces, lieu_deces, gedcom_pere, gedcom_mere) 
	 VALUES ($cle_indi, $sosa, '$nom', '$prenom', '$sexe', '$date_n', '$lieu_n', '$date_d', '$lieu_d', $cle_pere, $cle_mere)";

Pour être précis, tu devrais écrire :

$SqlTmp = "INSERT INTO Individus (gedcom, sosa, nom, prenom, sexe, date_naissance, lieu_naissance, date_deces, lieu_deces, gedcom_pere, gedcom_mere) 
	 VALUES (".$cle_indi.", ".$sosa.", '".$nom."', '".$prenom."', '".$sexe."', '".$date_n."', '".$lieu_n."', '".$date_d."', '".$lieu_d."', ".$cle_pere.", ".$cle_mere.")";


et au passage que donne un echo sur $SqlTmp ? Et qu'est-ce qu'il donne en étant copier-coller direct dans PhpMyAdmin ?



(au passage, mysql_query est dépréciée. En suivant ma signature, tu trouveras de quoi mettre ton site à jour...)
Modifié par Lothindil (11 Mar 2013 - 14:14)
Merci beaucoup, c'était bien ces guillemets qu'il manquait, en les rajoutant à chaque variable de l'insert, tout marche nickel et ma table a bien été remplie, merci encore.

Lothindil que veux tu dire par "(au passage, mysql_query est dépréciée. En suivant ma signature, tu trouveras de quoi mettre ton site à jour...) "

Bonne journée.
je veux dire que l'extension mysql_ est dépréciée et ne doit plus être utilisée. il existe une autre extension (mysqli) qui fait la même chose, se gère presque de la même manière et doit être utilisée à la place. Et dans ma signature, tu as un lien qui te mènera vers un article (Passer de mysql à mysqli) qui te donnera les trucs et les astuces pour passer facilement de l'un à l'autre.