Problema funzione UPDATE

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Ciao a tutti, il progetto amatoriale a cui mi sto approcciando è la costruzione di una stazione meteo.
Per capirci un po' qualcosa e avendo più sensori di temperatura ho creato una tabella chiamata monitoraggio composta da 2 colonne: id e temperatura.
I sensori inviano alla mia pagina index.php i valori di temperatura che ogni tot si aggiornano, se utilizzo il comando:
$sql = "INSERT INTO " . "monitoraggio"."(temperatura) " . "VALUES('".$temperatura."')";
tutto bene, il valore viene passato alla grande però nella mia tabella ovviamente ad ogni lettura viene creata una nuova riga. Io voglio che ad ogni sensore (corrispondente ad un id diverso) vari la corrispondente temperatura e quindi ho pensato che bisognasse inserire un vincolo sull'id e ho pensato di usare questa funzione:
$sql = "UPDATE monitoraggio SET Temperatura='.$temperatura' WHERE id=2";
(id=2 è solo 1 esempio).
Il problema è che in questo caso i valori vengono sì aggiornati nella tabella ma se ad esempio il valore che rileva il sensore è di 20.12 °C nella tabella mi compare 0.20 e non capisco perché visto che utilizzando la funzione INSERT INTO il valore posizionato nella tabella corrisponde a quello reale!
Come mai accade questa cosa? Oppure in alternativa come potrei fare?
(temperatura nella tabella l'ho impostato come float)
Grazie mille.
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Grazie mille per la risposta :)
quindi la sintassi corretta sarebbe la seguente, giusto?
$sql= INSERT INTO monitoraggio (id, Temperatura) VALUES(1, '.$temperatura') ON DUPLICATE KEY UPDATE Temperatura='.$temperatura';
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Si la mia chiave è proprio id.. solo che la query non funge..
$sql= "INSERT INTO monitoraggio (id, Temperatura) VALUES(1, '.$temperatura') ON DUPLICATE KEY UPDATE Temperatura='.$temperatura'";
Cosa sbaglio?
Grazie
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Allora.. facendo un po' di prove.. per capire se la sintassi fosse giusta ho fatto così: invece di passare una variabile ho passato proprio un valore di temperatura: 33.34 e ho fatto così:
$sql = "INSERT INTO monitoraggio (id, Temperatura) VALUES( 2, '33.34') ON DUPLICATE KEY UPDATE Temperatura = '33.34'";
solo che il problema è che alle volte funziona e altre volte no e non capisco perché!!!
Poi se la query la eseguo direttamente e non da codice .php funziona sempre...
Potete aiutarmi?
Grazie
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Mi è scappato un click su genio :)
la sintassi mi pare corretta, usa le funzioni di errore di php per capire cosa non va, se usi mysqli dovrebbe essere cosi
PHP:
if(!$sql->query($query) {
 echo "errore sql " . $sql->error
}
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Grazie per il genio.. ahahahah :)
quell'ultima istruzione non mi funziona.
Però adesso utilizzando la funzione:
$sql= "INSERT INTO monitoraggio (id, Temperatura) VALUES(2, '.$temperatura') ON DUPLICATE KEY UPDATE Temperatura='.$temperatura'";
avendo impostato $temperatura =33.34;
dopo aver fatto la query in uscita non mi restituisce quel valore ma 0.33
o_O come mai?!
Grazie mille ancora!!
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
no ok.. scusami ho risolto :) Grazie mille alla prossima! Sei stato molto gentile
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
togli i punti davanti alla variabile '$temperatura
PHP:
$sql= "INSERT INTO monitoraggio (id, Temperatura) VALUES(2, '$temperatura') ON DUPLICATE KEY UPDATE Temperatura='$temperatura'";