Insertion de données

Résolu/Fermé
isa.dama Messages postés 27 Date d'inscription mardi 15 mai 2018 Statut Membre Dernière intervention 16 novembre 2020 - 16 juil. 2018 à 13:51
isa.dama Messages postés 27 Date d'inscription mardi 15 mai 2018 Statut Membre Dernière intervention 16 novembre 2020 - 20 juil. 2018 à 16:48
Bonjour,
Je voulais insérerer le contenu d'un fichier texte dans ma base de données.
Le problème est que je recois un message d'erreur àdans la partie de mon code.
L'erreur et la suivante:

( ! ) Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans l'instruction INSERT INTO., SQL state 37000 in SQLExecDirect in C:\wamp\www\modules-passerelle\traitement_passerelle1.php on line 36

Lorsque j'affiche le résultat de ma requete, celle ci ne présente aucune anomalie. Ci dessous le resultat de ma requete (plusieurs lignes de ce genre).

(INSERT INTO passerelle (Etabl,Matricule,NumAxe,Rubr,CodeAnalytique,ExprP,ExprD,P,PSalarie,PCharges,PGlobal,D,DSalarie,DCharges,R,RSalarie,RCharges,RGain,RPerte,Lib,Editer) VALUES('.1', '0004', '0', '1111', 'FTE-17-1011', '6', ' ', '6.0', '0.0', '0.0', '0.0', '0.0', '0.0', '0.0', '6.0', '0.0', ' 0.0', '0.0', '0.0', ' ','0 ')

voici la partie de mon code (c'est la dernière ligne qui est le problème, ligne36).
Aider moi car ça fait maintenant 4 jours que je galère sans solution

<
gras>$fichier = fopen("C:\Thalia\Paye82\TEMP\FORAGESTECHNIC\NbJourPaye.txt", "r");

//tant qu'on est pas a la fin du fichier :
while (!feof($fichier))
{
// On recupere toute la ligne
$uneLigne = fgets($fichier, 1024);
//On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';')
$tableauValeurs = explode(';', $uneLigne);

$conn_paye=odbc_connect('ODBC_PayeFORAGESTECHNIC','','') or die ("Erreur de connexion à la base paye ");
// On crée la requete pour inserer les donner (ici il y a 12 champs donc de [0] a [11])
$sqlp="(INSERT INTO passerelle (Etabl,Matricule,NumAxe,Rubr,CodeAnalytique,ExprP,ExprD,P,PSalarie,PCharges,PGlobal,D,DSalarie,DCharges,R,RSalarie,RCharges,RGain,RPerte,Lib,Editer) VALUES('.$tableauValeurs[0]', '$tableauValeurs[1]', '$tableauValeurs[2]', '$tableauValeurs[3]', '$tableauValeurs[4]', '$tableauValeurs[5]', '$tableauValeurs[6]', '$tableauValeurs[7]', '$tableauValeurs[8]', '$tableauValeurs[9]', '$tableauValeurs[10]', '$tableauValeurs[11]', '$tableauValeurs[12]', '$tableauValeurs[13]', '$tableauValeurs[14]', '$tableauValeurs[15]', '$tableauValeurs[16]', '$tableauValeurs[17]', '$tableauValeurs[18]', '$tableauValeurs[19]','$tableauValeurs[20]')";

echo( "<center>".$sqlp."<br>" ) ;

$result =odbc_do($conn_paye, $sqlp);
</gras>




2 réponses

jordane45 Messages postés 36372 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 octobre 2022 4 366
16 juil. 2018 à 14:50
Bonjour,

Pas d'erreur dis tu ?
Moi j'ai déjà l'impression que tu as une parenthèse ouvrant en trop au début de ta requête....

0
isa.dama Messages postés 27 Date d'inscription mardi 15 mai 2018 Statut Membre Dernière intervention 16 novembre 2020
16 juil. 2018 à 17:00
Bonsoir
oui effectivement vous avez raison
en faisant cette correction, un autre message s'affiche toujours sur la même ligne 36
Voici le message mais il n'ya a pas plus de détail.

( ! ) Warning: odbc_do(): in C:\wamp\www\modules-passerelle\traitement_passerelle1.php on line 36



voici la ligne 36 qui permet d'exécuter la requête d'insertion

$result =odbc_do($conn_paye, $sqlp);
0
Pinzou76 Messages postés 609 Date d'inscription dimanche 17 septembre 2017 Statut Membre Dernière intervention 25 février 2019 187
16 juil. 2018 à 17:14
Bonjour,
Toujours dans la requête INSERT, la première valeur ajoutée est
.$tableauValeurs[0]

Avec un point devant le $, alors qu'il n'y en a pas devant toutes les autres valeurs.
Serait-ce une source d'erreur ?
0
isa.dama Messages postés 27 Date d'inscription mardi 15 mai 2018 Statut Membre Dernière intervention 16 novembre 2020
16 juil. 2018 à 17:58
merci pour cette remarque mais après cette correction j'ai toujours le même message d'erreur.
( ! ) Warning: odbc_do(): in C:\wamp\www\modules-passerelle\traitement_passerelle1.php on line 36 


Le problème ne viendrai pas de l'utilisation de odbc_do?
J'ai éssayé avec odbc_exec mais même message d'erreur
0
isa.dama Messages postés 27 Date d'inscription mardi 15 mai 2018 Statut Membre Dernière intervention 16 novembre 2020
16 juil. 2018 à 20:40
lorsque j'affiche ma requete elle me donne ça

(INSERT INTO passerelle VALUES('1','0004','0','1111','FTE-17-1011','6',' ','6.0','0.0','0.0','0.0','0.0','0.0','0.0','6.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0004','0','1111','FTE-18-1003','1',' ','1.0','0.0','0.0','0.0','0.0','0.0','0.0','1.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0002','0','1111','FTE-18-1005','5',' ','5.0','0.0','0.0','0.0','0.0','0.0','0.0','5.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0003','0','1111','FTE-18-1005','7',' ','7.0','0.0','0.0','0.0','0.0','0.0','0.0','7.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0004','0','1111','FTE-18-1005','6',' ','6.0','0.0','0.0','0.0','0.0','0.0','0.0','6.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0003','0','1111','FTE-18-1007','7',' ','7.0','0.0','0.0','0.0','0.0','0.0','0.0','7.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0002','0','1111','FTE-18-1008','13',' ','13.0','0.0','0.0','0.0','0.0','0.0','0.0','13.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0003','0','1111','FTE-18-1008','13',' ','13.0','0.0','0.0','0.0','0.0','0.0','0.0','13.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0004','0','1111','FTE-18-1008','12',' ','12.0','0.0','0.0','0.0','0.0','0.0','0.0','12.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0004','0','1111','FTE-18-1010','1',' ','1.0','0.0','0.0','0.0','0.0','0.0','0.0','1.0','0.0',' 0.0','0.0','0.0',' ','0 '))
(INSERT INTO passerelle VALUES('1','0002','0','1111','FTE-18-1018','7',' ','7.0','0.0','0.0','0.0','0.0','0.0','0.0','7.0','0.0',' 0.0','0.0','0.0',' ','0'))



le problème c'est l'insertion car si j'éssais de le faire manuellement dans access cela fonctionne. Je pense que le problème vient de la fonction d'insertion.
0
jordane45 Messages postés 36372 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 octobre 2022 4 366
16 juil. 2018 à 20:46
Au niveau de la syntaxe d'une requête INSERT ... il est préférable d'y indiquer les champs pour lesquels ont veut faire l'insertion
INSERT INTO <NomTable> (<Champ>, <Champ2>…..) VALUES (<Valeur1>, <Valeur2>….)
0
isa.dama Messages postés 27 Date d'inscription mardi 15 mai 2018 Statut Membre Dernière intervention 16 novembre 2020
20 juil. 2018 à 16:48
Mon probl-me est réglé.
En fait il ny avait une ligne vide à lafin du fichier que j'essayais d'importer.
Cela posait problème.
En plus le symbole du decimal devait être une virgule au lieu d'un point.

Encore merci à tous
0