Problema funzione UPDATE

  • Creatore Discussione Creatore Discussione nigiu
  • Data di inizio Data di inizio

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.
 
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';
 
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
 
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:
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
}
 
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!!
 
no ok.. scusami ho risolto :) Grazie mille alla prossima! Sei stato molto gentile
 
togli i punti davanti alla variabile '$temperatura
PHP:
$sql= "INSERT INTO monitoraggio (id, Temperatura) VALUES(2, '$temperatura') ON DUPLICATE KEY UPDATE Temperatura='$temperatura'";
 

Discussioni simili