Erreur de syntaxe php ou bien ?

demonjhon
Invité n'ayant pas de compte PHPfrance

16 févr. 2012, 20:01

Bonjour a tous,

Ai une erreur de syntaxe dans ce code php ?
$count = $bdd->prepare('UPDATE com_jeton SET autorisation=:autorise WHERE idunique=:idun');
             $count->execute(array(
             'autorise' => '1',
             'idun' => $idunique));
ET si non d'ou peut venir mon erreur ? je n'ai pas de message d'erreur car c'est un code qui ai appelé de l'extérieur de mon site pour un traitement.
Je me bidouillerais un outil de debug si vous ne trouvez rien que vous flash les yeux !

Merci a vous tous !

ViPHP
xTG
ViPHP | 7331 Messages

16 févr. 2012, 20:05

Rien qui flashe si ce n'est l'utilisation d'une requête préparée alors que PDO::query() suffirait amplement.
S'il y a une erreur mais que c'est un cron qui l'exécute regardes les logs de PHP.

Eléphanteau du PHP | 48 Messages

16 févr. 2012, 20:16

Je n'ai pas acces au log. En fait ce code signe la fin du traitement des reglements paypal. Les fameux NIP.

J'essai simplement de mettre a jour la base mais rien n'y fait. J'ai egalement essayer simplement ca:
$count = $bdd->exec("UPDATE com_jeton SET autorisation='1' WHERE idunique=$idunique_IC");
Mais idem ca ne passe pas !

La req query tu l'ecrirais de quelle maniere ?

Eléphant du PHP | 179 Messages

16 févr. 2012, 20:18

Pareil que ta exec mais avec query :)

Eléphanteau du PHP | 48 Messages

16 févr. 2012, 20:20

;p merci je v tester de suite !

Eléphanteau du PHP | 48 Messages

16 févr. 2012, 20:22

bon ben non plus :/

Eléphant du PHP | 179 Messages

16 févr. 2012, 20:23

tu as test un echo de ta req avec un test sql direct dans phpmyadmin ?

Eléphanteau du PHP | 48 Messages

16 févr. 2012, 20:29

absolument pas !

tu fai ca comment dans phpmyadmin ?

Eléphanteau du PHP | 48 Messages

16 févr. 2012, 20:29

heu je crois avoir trouver! si ya juste le bout de code a tester sans rien d'autre j'obtient cette erreure:

Erreur
Il semble qu'il y ait une erreur dans votre requête SQL. Le message ci-bas peut vous aider à en trouver la cause.

ERROR: Ponctuation invalide @ 14
STR: ->
SQL: $count = $bdd->query("UPDATE com_jeton SET autorisation='1' WHERE idunique=$idunique_IC")

requête SQL:

$count = $bdd->query("UPDATE com_jeton SET autorisation='1' WHERE idunique=$idunique_IC")

MySQL a répondu:

#1064 - 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 '$count = $bdd->query("UPDATE com_jeton SET autorisation='1' WHERE idunique=$idun' at line 1

ca aide pas des masses lol

ViPHP
xTG
ViPHP | 7331 Messages

16 févr. 2012, 20:45

Euh non jusqu'aux dernière nouvelles un SGBD interprète du code SQL et non PHP. ;)
PhpMyAdmin est juste un logiciel graphique, donc lui aussi il attend du SQL, c'est d'ailleurs le titre de l'onglet que tu utilises dans la majorité des versions.
UPDATE com_jeton SET autorisation='1' WHERE idunique=151
151 à remplacer par ton id.

Eléphanteau du PHP | 48 Messages

16 févr. 2012, 20:49

oh oui ! kel fichu idiot je suis ^^


Je test ca je te repond ensuite !

Merci mec

Eléphanteau du PHP | 48 Messages

16 févr. 2012, 21:02

hum

bon ca ne renvoi pas d'erreur et ca n'affecte aucun enregistrement ! je suis perplexe la c de la magie ^^.

Je vais creuser avec tes info xtg. merci.

ViPHP
xTG
ViPHP | 7331 Messages

16 févr. 2012, 21:44

Un UPDATE ne renvoie jamais d'enregistrement...
Va falloir creuser en priorité la documentation du langage SQL. ;)

Tu peux supprime la partie du SET et remplacer UPDATE par SELECT * pour obtenir une requête de sélection et ainsi vérifier que l'id pointe bien vers un n-uplet existant.

Eléphanteau du PHP | 48 Messages

17 févr. 2012, 10:33

Ayé j'ai trouvé l'erreur.

Il prefere cette ecriture:
$count = $bdd->exec("UPDATE com_jeton SET autorisation='1' WHERE idunique='$idunique_IC'");
plutot que celle ci !
$count = $bdd->exec("UPDATE com_jeton SET autorisation='1' WHERE idunique=$idunique_IC");
Difference minime mais essentielle a mon traitement !
Un UPDATE ne renvoie jamais d'enregistrement...
A ce sujet, je voulais simplement dire que lorsque tu execute la requete sql, phpmyadmin te renvoi le nombre d'enregistrement affecter par la ligne de commande. Je suis d'accord avec toi que ca ne renvoi rien. Simplement phpmyadmin permet d'etre sur que la requete fait bien ce kon lui demande.

Merci pour ton aide et c grace a toi que j'ai mis le doigt sur cette erreur de syntaxe.

ViPHP
xTG
ViPHP | 7331 Messages

17 févr. 2012, 10:40

Si tu as besoin de quote c'est que ton idunique n'est pas un numérique.
Et cela me semble donc bizarre que PhpMyAdmin ne t'ai pas renvoyé une erreur lorsque tu as testé la requête...
M'enfin bon si c'est réglé... :)