[R] Update mysql

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

[R] Update mysql

#1

Message 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 ?
Modifié en dernier par lokomass le mar. 03 mars 2015 16:25, modifié 1 fois.
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] Update mysql

#2

Message 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 :)
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Update mysql

#3

Message 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 ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Update mysql

#4

Message par lokomass »

Bonjour,

Le point virugle ne change rien au fonctionnement.
Voici la table "sauvegarde" :

Image

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.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Update mysql

#5

Message 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.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Update mysql

#6

Message par lokomass »

Effectivement value est un "int"
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Update mysql

#7

Message 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';")
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Update mysql

#8

Message 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%';
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [..] Update mysql

#9

Message 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
Répondre