Bonjour,
Je souhaite faire un truc de simple. Je développe une application IOS/Android et sur une vue, elle affiche tous les capteurs disponibles pour une station.
Pour chaque capteur, il est possible de définir un seuil minimum et maximum ainsi qu'un oprateur.. Ces valeurs sont sauvées dans une table 'thresholds'
thresholds
- id_threshold (int)
- sensors_id_sensor (VAR)
- threshold_min (INT)
- threshold_max (INT)
- threshold_operator (INT)
Tous les capteurs m'ont pas forcément des valeurs de seuil. Par conséquent, il n'y pas d'enreistrement dans la table thresholds correspondant à sensors_id_sensor.
Si maintenant, je veux enregistrer des valeurs de seuil pour le capteur 45 (sensors_id_sensors) il doit ajouter un enregistrement dans la table 'thresholds, dont le champs 'sensors_id_sensor' aura pour valeur 45.
Mon problème est que si cette ligne avec la valeur 45 existe déjà, il ne dois pas me retourner un message d'erreur, mais la mettre à jour.
J'ai essayé ceci en pensant que UPDATE créerait une ligne, si sensors_id_sensor n'existait pas avec une valeur de 5
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $sql_update = 'UPDATE thresholds SET threshold_min = '.$payload["threshold_min"].', threshold_max = '.$payload["threshold_max"].', threshold_operator = "'.$payload["threshold_operator"].'" WHERE sensors_id_sensor = 45'; if ($connect->query($sql_insert) === TRUE) { $payload['method'] = $method; $payload['response'] = 200; } else { $payload['method'] = $method; $payload['response'] = 500; // 500 Internal Server Error }
J'ai constaté que ceci met bien à jour, pour autant qu'elle existe, si non rien ne se passe.
J'ai cherché un peu plus loin et je suis arrivé à ca
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $sql_insert 'INSERT into thresholds( id_threshold, sensors_id_sensor, threshold_min, threshold_max, threshold_operator ) VALUES( "", '.$payload["sensors_id_sensor"].', '.$payload["threshold_min"].', '.$payload["threshold_max"].', "'.$payload["threshold_operator"].'" )ON DUPLICATE KEY UPDATE sensors_id_sensor = VALUES(sensors_id_sensor), VALUES(theshold_min), VALUES(threshold_max), VALUES(threshold_operator)';
(J'espère ne pas trop avoir fait d'erreur de syntaxe)
Ma question, comment être sûre que c'est la valeur 'sensors_id_sensor' uniquement qui est comparée, et non pas id_threshold, ou une autre?
On ne peut pas ajouter une cluase WHERE comme dans UPDATE?
Merci







Répondre avec citation








Partager