[RESOLU] syntaxe à utiliser pour une requête composé de variables

syntaxe à utiliser pour une requête composé de variables [RESOLU] - PHP - Programmation

Marsh Posté le 02-01-2014 à 17:42:25    

Bonjour, et bonne année 2014.
 
voila je sèche depuis un bon moment sur une requête Mysql faite par l’intermédiaire de php.
 

Code :
  1. $sql_itt = "INSERT INTO $table
  2.     (
  3.     `champ1`, `champ2`, `champ3`, `chammp4`, `champ5`, `champ6`
  4.     )
  5.     VALUES
  6.     (
  7.      \"$data[0]\" ,\" $data[1]\"
  8.      \"$data[2]\" ,\" $data[3]\"
  9.      \"$data[4]\" ,\" $data[5]\"
  10.     )";


 
vous aurez remarquer que ce ne sont que des variables en valeurs
ces var sont issues d'un fgetcsv.  
 
j'ai un

Code :
  1. echo ("$sql_itt" );


qui me sort mes données correctement cependant j'ai un message d'erreur
 Column count doesn't match value count at row 1
mais ce message est destiné a une non correspondance entre le nombre de champs et de valeurs.
 
ensuite j'ai un beau
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ... données de ce que je souhaite insérer  

or si je modifie la syntaxe plus rien n'est bon ...
 
bref, c'est le caca .
 
vous avez des idées pour que me requête fonctionne ?


Message édité par Djeweler le 08-01-2014 à 16:49:39
Reply

Marsh Posté le 02-01-2014 à 17:42:25   

Reply

Marsh Posté le 02-01-2014 à 18:00:05    

les virgules c'est important les virgules. Je préfère faire un truc du genre, mais attention pense d'abord à bien protéger ce que tu insères vu que sinon c'est la porte ouverte à toute les failles.

 
Code :
  1. $sql_itt = "INSERT INTO $table
  2.         (
  3.         `champ1`, `champ2`, `champ3`, `chammp4`, `champ5`, `champ6`
  4.         )
  5.         VALUES
  6.         (".$data[0].", ".$data[1]." , ".$data[2]." , ". $data[3].", ".$data[4]." , ".$data[5]." )";


Message édité par Pablo Escrobarbe le 02-01-2014 à 18:00:42
Reply

Marsh Posté le 03-01-2014 à 09:40:29    

en effet j'avais pas fait gaffe que j'avais mis une virgule sur deux, c'est due au changement de syntaxe répétitif.
 
par contre avec ta syntaxe petitpois2 j'ai en retour un massage d'erreur  
 
Unknown column 'CODE' in 'field list'   code étant ma première colonne .
 
puis  
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' --> puis les données de la colonne 5

Reply

Marsh Posté le 03-01-2014 à 14:46:17    

Faut que tu rajoutes des ' en plus

Code :
  1. VALUES
  2.         ('".$data[0]."',"

Reply

Marsh Posté le 08-01-2014 à 10:31:08    

jai tester avec  

Code :
  1. VALUES
  2. ( '".$data[0]."', '".$data[1]."'...)"


 
mais ça me renvoi en message d'erreur
Incorrect integer value: 'CODE' for column 'code' at row 1
 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mes données
 
Ce qui est étrange c'est qu'au final ça remplis ma base mais pas correctement.
par exemple les trois premières lignes ne sont pas introduit dans la table, puis cela recommence plus loin dans le fichier des liges sont zappé . je comprend pas


Message édité par Djeweler le 08-01-2014 à 10:33:59
Reply

Marsh Posté le 08-01-2014 à 11:03:58    

Tu as suivis la casse pour tes noms de colonnes ? Là ça vient de toi cette erreur, je peux pas t'aider si tu me mets pas ta requête.


Message édité par Pablo Escrobarbe le 08-01-2014 à 11:04:20
Reply

Marsh Posté le 08-01-2014 à 11:26:51    

ma requête sql est la suivante  
 

Code :
  1. $sql_itt = " INSERT IGNORE INTO $table ($db)
  2.    (
  3.     `code`,`langue`,`cycle`,`ligne`,`commentaire`,`tri`
  4.    )
  5.     VALUES
  6.    (
  7.    '".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."','".$data[4]."','".$data[5]."'
  8.    )";


 
sinon je comprend pas cette histoire de casse. tu parle au niveau de la table ou du fichier que je souhaite importé ?
 


Message édité par Djeweler le 08-01-2014 à 11:38:57
Reply

Marsh Posté le 08-01-2014 à 16:31:56    

au niveau des noms des champs

Reply

Marsh Posté le 08-01-2014 à 16:36:02    

fait un

Code :
  1. echo $sql_itt;


 
Mais en relisant l'erreur, il semblerait que code attend un entier et que tu lui passe une valeur qui n'en est pas.

Reply

Marsh Posté le 08-01-2014 à 16:45:41    

c'est bon j'ai réussis à m'en sortir  
 
comme ma première colonne a une structure en int du coup j'ai dégager les double quottes sur data 0 comme ceci

Code :
  1. VALUES
  2.    (
  3.     '.$data[0].','".$data[1]."','".$data[2]."','".$data[3]."','" . mysql_real_escape_string($data[4]) . "','".$data[5]."'
  4.    )";


 
et pluis j'avais une erreur syntaxe tralala  
 
en fait ça venait de mon fichier les apostrophes étaient considéré comme un nouveau champs du coup j'ai protéger la colonne ou il y a des  apostrophes avec mysql_real_escape_string()
 
et tout est nickel  
 
en tout cas merci Petitpois2


Message édité par Djeweler le 08-01-2014 à 16:49:10
Reply

Sujets relatifs:

Leave a Replay

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