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" :

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.

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