Page 1 sur 1

[R] Error near "," : Syntax error

Posté : dim. 01 mai 2016 19:28
par GMH
Bonjour,

Ce code affiche l'erreur Error near "," : Syntax error

Code : Tout sélectionner

If Not _SQLite_Exec ($bdd, "INSERT INTO Main VALUES ("&$a[1]&","&$a[2]&","&$a[3]&","&$a[4]&","&$a[5]&","&$a[6]&","&$a[7]&","&$a[8]&","&$a[9]&","&$a[10]&","&$a[11]&","&$a[12]&","&$a[13]&","&$a[14]&","&$a[15]&");") = $SQLITE_OK Then  MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())
Je ne vois pas mon erreur. La voyez-vous ?

Je vous remercie.

Re: [..] Error near "," : Syntax error

Posté : dim. 01 mai 2016 19:39
par blacksoul305
Bonsoir !

Personnellement, je n'en vois pas. Maintenant que contient $a ? Des entiers, des chaînes de caractères, des flottants ?

Re: [..] Error near "," : Syntax error

Posté : dim. 01 mai 2016 19:44
par GMH
Bonsoir et merci.

Voici l'affichage dans la console :
! SQLite.au3 Error
--> Function: _SQLite_Exec
--> Query: INSERT INTO Main VALUES (55,1462097222,Bouvines,0,0, -1789343705,0, -1,,30.0,3.0,0,1462097222,0.0,0.0);
--> Error: near ",": syntax error

Re: [..] Error near "," : Syntax error

Posté : dim. 01 mai 2016 19:52
par blacksoul305
Je crois que $a[9] (si je sais encore compter) n'est pas évalué, il y a donc deux virgules consécutives. Il faudrait revoir le code qui permet de générer le tableau et voir pourquoi cette valeur ne va pas bien.

Re: [..] Error near "," : Syntax error

Posté : dim. 01 mai 2016 19:54
par GMH
La valeur $a[9] est vide.

Re: [..] Error near "," : Syntax error

Posté : dim. 01 mai 2016 20:10
par blacksoul305
Mais si on tentait de la remplacer par NULL plutôt ? La sortie console me semble normale à priori, le seul truc qui pourrait coincer syntaxiquement c'est ça, sinon je vois pas.

Re: [..] Error near "," : Syntax error

Posté : dim. 01 mai 2016 20:20
par GMH
J'ai d'autre part l'erreur suivante si $a[3] contient un espace.
--> Query: INSERT INTO Main VALUES (39,1462094455,Ville Neuve,0,0,196448602,0,-1,,22.0,3.0,0,1462094666,0.0,0.0);
--> Error: near "Neuve": syntax error
Et je retrouve la première erreur si j'enlève l'espace :
--> Query: INSERT INTO Main VALUES (39,1462094455,Villeneuve,0,0,196448602,0,-1,,22.0,3.0,0,1462094666,0.0,0.0);
--> Error: near ",": syntax error
Avec NULL j'obtiens cette erreur :
Query: INSERT INTO Main VALUES (55,1462097222,Bouvines,0,0, -1789343705,0, -1,NULL,30.0,3.0,0,1462097222,0.0,0.0);
--> Error: no such column: Bouvines

Re: [..] Error near "," : Syntax error

Posté : dim. 01 mai 2016 20:30
par blacksoul305
Le fait que "Ville Neuve" entraîne une erreur est parfaitement normale dans le sens où les chaînes de caractères sont normalement entre ' '. Ainsi 'Ville Neuve' devrait pas poser de problème.

Après pour le reste, j'en sais rien. Est-il possible d'avoir la structure de la table ? J'ai pas encore assez d'expérience en MySQL et j'ai encore du mal à déboguer mes propres requêtes haha !

Re: [..] Error near "," : Syntax error

Posté : dim. 01 mai 2016 20:42
par GMH
L'erreur était bien en $a[3]. Ce champ étant rempli par un string, j'ai rajouté les quotes comme vous me l'avez fait remarquer :
If Not _SQLite_Exec ($bdd, "INSERT INTO Main VALUES ("&$a[1]&","&$a[2]&",'"&$a[3]&"',"&$a[4]&","&$a[5]&","&$a[6]&","&$a[7]&","&$a[8]&","&$a[9]&","&$a[10]&","&$a[11]&","&$a[12]&","&$a[13]&","&$a[14]&","&$a[15]&");") = $SQLITE_OK Then MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())
Plus aucune erreur n'est désormais signalée.

Grand merci à vous !

Re: [R] Error near "," : Syntax error

Posté : dim. 01 mai 2016 20:45
par blacksoul305
Bon, finalement c'était cette vilaine chaîne de caractères !

A bientôt et bon courage pour votre projet !

Re: [R] Error near "," : Syntax error

Posté : dim. 01 mai 2016 20:49
par GMH
Je vous remercie.

Re: [R] Error near "," : Syntax error

Posté : lun. 02 mai 2016 11:47
par jchd
Il faut "échapper" toute apostrophe (simple quote) dans toute variable chaîne, en les doublant.

Code : Tout sélectionner

If Not _SQLite_Exec ( _
						$bdd, _
						"INSERT INTO Main VALUES (" & _
							$a[1] & "," & _
							$a[2] & "," & _
							"'" & StringReplace($a[3], "'", "''") & "'," & _
							$a[4] & "," & _
							$a[5] & "," & _
							$a[6] & "," & _
							$a[7] & "," & _
							$a[8] & "," & _
							"'" & StringReplace($a[9], "'", "''") & "'," & _
							$a[10] & "," & _
							$a[11] & "," & _
							$a[12] & "," & _
							$a[13] & "," & _
							$a[14] & "," & _
							$a[15] & ");"
					) = $SQLITE_OK _
Then MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())

Re: [R] Error near "," : Syntax error

Posté : lun. 02 mai 2016 12:18
par GMH
Oui les quotes peuvent en effet poser des problèmes si la valeur entrée contient des apostrophes.

Est-ce que la fonction _SQLite_FastEscape($a[3]) a cette utilité ?

Re: [R] Error near "," : Syntax error

Posté : lun. 02 mai 2016 14:29
par jchd
C'est très exactement ce que fait cette fonction.