我在比较2个值时遇到问题,并且在if语句中让1值发生变化。但是当我重新加载页面时,它会再次获取第一个值。我打开或关闭机器时使用此代码在数据库中设置一些信息。
$urlMachineON = 'http://192.168.0.150/awp/Shredder/PLCfiles/IOmachineActive.html';
// get content
$contentMachineON = file_get_contents($urlMachineON);
//remove first 2 characters
$truncate = substr($contentMachineON, 2);
//remove last 5 characters
$MachineOn = substr($truncate, 0, -5);
//MachineON can only be 1 or 0
$currentState = 2;
if ($MachineOn != $currentState)
{
$stmt = $conn->prepare("INSERT INTO machineactiviteit (Time, MachineStatus) VALUES(NOW(), ?)");
$stmt->bind_param('s', $MachineOn);
if ($stmt->execute() === TRUE)
{
$currentState = $MachineOn;
echo 'success';
}
else
{
echo $conn->error;
}
$stmt->close();
}
elseif($MachineOn == $currentState)
{
echo 'do nothing';
}
因此,当我这样做时,他将始终使用if语句,因为$currentState
和$MachineOn
总是彼此不同。在C#中,您可以使用initalize组件将值设置为特定值一次。但我还没有在php中发现任何相关信息。所以我的问题是我可以只设置一次值吗?或者我应该以另一种方式解决这个问题?
这是它应该如何工作:
之前的第一次尝试:currentState = 2;
MachineOn = 0;
之后:currentState= 0;
MachineOn = 0;
之前的第二次尝试:currentState= 0;
MachineOn = 0;
之后:currentState= 0;
MachineOn = 0;
之前的第三次尝试:currentState= 0;
MachineOn = 1;
之后:currentState= 1;
MachineOn = 1;
(我可以使用按钮更改MachineOn值)。
答案 0 :(得分:0)
只需在某处保存$ currentState值即可。例如,在文件或数据库中。
$currentState = file_get_contents('filepath'); // last saved state (check if is set!)
if($currentState !== $MachineOn) {
file_put_contents('filepath', $MachineOn); // Save current state
} else {
file_put_contents('filepath', 2); // Save other state
}
这是pseoudocode。请记住检查文件是否存在且有价值。