将问题与php值进行比较
我在比较2个值并让1个值在if语句中更改时遇到问题。当然,当我重新加载页面时,它会再次拾取第一个值。我用这段代码来设置当机器打开或关闭时数据库中的一些信息将问题与php值进行比较,php,if-statement,state,Php,If Statement,State,我在比较2个值并让1个值在if语句中更改时遇到问题。当然,当我重新加载页面时,它会再次拾取第一个值。我用这段代码来设置当机器打开或关闭时数据库中的一些信息 $urlMachineON = 'http://192.168.0.150/awp/Shredder/PLCfiles/IOmachineActive.html'; // get content $contentMachineON = file_get_contents($urlMachineON); //remove first 2 c
$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 component的方法将值一次性设置为特定值。但是我在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值)。只需将$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。记得检查文件是否存在并且是否有值。PHP是完全无状态的——每次执行代码时,它都会重置所有内容,除非您使用会话变量、cookie或某种数据库来持久化该值。目前来看,这段代码永远不会起任何作用。我想我必须处理我的数据库查询,并检查我使用数据库的机器的最后状态。获取我的最后状态