Insertion de données [Résolu/Fermé]

Signaler
Messages postés
27
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
16 novembre 2020
-
Messages postés
27
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
16 novembre 2020
-
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

Messages postés
32458
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mai 2021
3 486
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....

Messages postés
609
Date d'inscription
dimanche 17 septembre 2017
Statut
Membre
Dernière intervention
25 février 2019
162
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 ?
Messages postés
27
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
16 novembre 2020

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
Messages postés
27
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
16 novembre 2020

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.
Messages postés
32458
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mai 2021
3 486
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>….)
Messages postés
27
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
16 novembre 2020

en réalité je suis entrain de contourner un problème que j'ai posté sur ce site mais sans réponse.
j'ai une requête impliquant l'utilisation de 2 bases de données access.
lorsque je lance ma requête dans mon code apache cherche la 2ieme base dans un emplacement C:\wamp\bin\apache2.2.49. je ne sais pas pourquoi ça fait ça. Il faut chaque fois que j'envoie une copie de ma base dans ce dossier avant que mon code s'exécute.
si j'ai la solution a la première option je ne penserai à faire exporter et importer des fichiers
J'ai donc pensé à lier les 2 bases en passant par un fichier texte.
Messages postés
27
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
16 novembre 2020

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