|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
Bonjour,
J'ai un problème je n'arrive pas a effectuer un update sur une table de ma base de donnée via une requête sql. Je dispose d'une table Personnages, ou il y a les tables : id, nom, dégâts, force, expérience. La table force est de type entier. Voici ma requête: Code :
J'ai l'erreur suivante: Citation:
|
|||
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Bonjour,
Que souhaites tu faire avec ton '+', une concaténation, une addition ? |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
Une addition
|
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 726 ![]() |
Salut
Ca ressemble beaucoup à un bug (toujours de PDO) détecté sur le LIMIT. Pour résumer, apparemment on ne pourrait pas "binder" une valeur dans de telles conditions, plus particulièrement lorsque que le type est "integer". Vu que c'est une addition, le plus simple c'est de ne pas mettre de bindValue, mais de "typer" la donnée, ce qui à mon sens empêchera toute injection SQL (qui est à mon sens le but principal de binder). Exemple : Code :
... force = :force + force ... Mais je doute que ça marche, Pdo risque de rajouter des quotes, ce que MySQL n'apprécierait pas apparemment.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
10
|
|
|
#5 | |
|
Expert Confirmé
![]() ![]() |
Citation:
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
Merci de vos reponses.
J'ai essayé les différentes techniques mais aucune ne marchent. Ce que je ne comprend pas c'est que j'ai utilisé cette technique pour mettre a jour différentes valeurs de type entier et cela marcher. Je ne vois pas pourquoi sa ne marche pas dans ce cas la. |
|
|
00
|
|
|
#7 | |||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 726 ![]() |
Citation:
Si tu obtiens une erreur différente ou la même (même légère), il faut quand même le dire, on ne peu pas deviner, vois tu. Si tu as utiliser l'exemple que j'ai mis, ça me parais impossible d'obtenir la même erreur que tu as eu au début, ce qui sous entend que tu n'agirais pas sur la bonne requête SQL. Pour en avoir la certitude d'agir sur la même requête, il suffit de créer volontairement un bug, comme créer une erreur sur le nom du champ. Exemple : Code :
Ceci dit, "force" ou "id" sont peut être des mots réservés (particuliers), va savoir. (je ne sais pas, ou plus. Pure hypothèse). Essai en entourant ces noms comme ceci : Code :
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||||
|
|
10
|
|
|
#8 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
Merci cette technique marche.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com