Page 1 sur 1
[R] Update mysql
Posté : lun. 02 mars 2015 16:37
par lokomass
Bonjour à tous,
Je rencontre un petit souci.
J'arrive à récupérer les valeurs d'un table dans ma BDD mais pas à faire l'update d'un champ tout bête, je ne comprend pas...
Code : Tout sélectionner
#include <SQL.au3>
;Variables de connexion à la BDD
$User = "lokomass"
$Pass = "..."
$Database = "..."
$Serveur = "...."
$t = Attente()
;Fonction d'attente
Func Attente()
$Sql = _MySQLConnect($User, $Pass, $Database, $Serveur)
$Reste = _Query($Sql, "SELECT * FROM sauvegarde WHERE item='cycle'")
$Cycle = $Reste.Fields("value").value
; je suis sur ici que Cycle=4
$Update = _Query($Sql, "UPDATE sauvegarde SET value='" & $Cycle & "' WHERE item='compteur'")
_MySQLEnd($Sql)
EndFunc
Je n'ai aucune erreur mais pas de mise à jour en BDD ?? J'ai aussi testé mon update dans phpMyAdmin pour vérifier ma requête mais elle est bonne...
Une idée svp ?
Re: [..] Update mysql
Posté : lun. 02 mars 2015 18:39
par sozary
Je ne connais pas trop cet UDF, mais avec EzMySql, il faut plutôt écrire avec un point virgule à la fin:
$Update = _Query($Sql, "UPDATE sauvegarde SET value='" & $Cycle & "' WHERE item='compteur';")
Après je m'y connais pas troop non plus mais bon

Re: [..] Update mysql
Posté : lun. 02 mars 2015 22:52
par jchd
Je suis un peu perdu dans les dénominations employées pour les colonnes : item, cycle, value.
Il faut aussi être sûr qu'il existe une ou plusieurs rangée(s) avec item = 'compteur'
Le SELECT liste la première rangée qui vient (au hasard car il n'y a pas de clause order by) qui possède item = 'cycle'. On veut bien croire que sa colonne 'value' vaut 4 (mais pourquoi appeler ça $cycle ?) mais qui nous dit qu'il y a aussi une rangée permettant l'update ?
Re: [..] Update mysql
Posté : mar. 03 mars 2015 09:12
par lokomass
Bonjour,
Le point virugle ne change rien au fonctionnement.
Voici la table "
sauvegarde" :
Du coup je veux juste mettre la "value" de cycle (4) dans compteur => 0.
Après le nommage des variables, j'ai mis des trucs un peu au pif je dois dire.
Re: [..] Update mysql
Posté : mar. 03 mars 2015 11:07
par jchd
Quel est le type déclaré de la colonne value ? Tu y écris une chaîne : SQLite la stockerait telle quelle mais sous MySQL et si value est déclarée en numérique, je ne sais pas s'il fait la conversion ou s'il rejette l'update.
Re: [..] Update mysql
Posté : mar. 03 mars 2015 11:34
par lokomass
Effectivement value est un "int"
Re: [..] Update mysql
Posté : mar. 03 mars 2015 14:08
par lokomass
Ce n'est pas ça, j'ai essayé la requête en dur mais pas de modif :
Code : Tout sélectionner
$Update = _Query($Sql, "UPDATE sauvegarde SET value=8 WHERE item='compteur';")
Re: [..] Update mysql
Posté : mar. 03 mars 2015 15:02
par jchd
Je ne connais pas cet UDF et je n'emploie pas MySQL mais techniquement, un update n'est pas une requête (_Querry) mais une commande sans retour autre éventuellement qu'un code erreur. Vois si cela a une importance dans l'UDF que tu utilises, mais j'y crois peu.
Avec un moteur SQL de base, cette séquence fonctionne (le type text peut devoir être char(n) ou autre) :
Code : Tout sélectionner
create table if not exists sauvegarde("item" text, "value" int);
insert into sauvegarde values ('compteur', 0), ('cycle', 4);
select * from sauvegarde;
item value
compteur 0
cycle 4
Code : Tout sélectionner
update sauvegarde set "value" = (select "value" from sauvegarde where "item" = 'cycle') where "item" = 'compteur';
select * from sauvegarde;
item value
compteur 4
cycle 4
Par ailleurs, value est un mot-clé pour SQL et que donne cette requête :
Code : Tout sélectionner
select '>' || item || '<' from sauvegarde where item like '%compteur%';
Re: [..] Update mysql
Posté : mar. 03 mars 2015 15:41
par lokomass
Je viens de comprendre.... Le user que j'utilisais n'avais que les droits SELECT... Je suis nul ! Du coup mon code tout en haut fonctionne impec.
Désolé du dérangement et merci pour l'aide