代码旨在在未找到结果集匹配时发送警告。但是由于某种原因,我发现我的if语句if($send_warning = true)
没有在正确的时间执行。
根据代码,它应该在while循环结束时执行,它应该使用$send_warning
变量来确定整个结果集是否包含匹配并相应地发送警告。
考虑以下结果集
1. 8.22.33.44
2. 9.88.44.33
3. 11.22.55.77
$_SERVER["REMOTE_ADDR"]
评估为11.22.55.77
因此循环显然在第一个索引处开始,因此它在第一次迭代时将$send_warning
设置为true - 但是循环尚未完成。此时,if语句已被触发。这是错误的 - 因为它应该等到整个循环结束。
我在这里失踪了什么?
$send_warning = false;
if ($result->num_rows > 0) {
// output data of each row
while($ip = $result->fetch_assoc()) {
var_dump($ip['ip_address']);
echo "<br>";
var_dump($_SERVER["REMOTE_ADDR"]);
if($ip['ip_address'] == $_SERVER["REMOTE_ADDR"]) {
$send_warning = false;
break;
var_dump("not sending");
} else {
var_dump("sending");
$send_warning = true;
}
}
if($send_warning = true) {
send($send);
}
} else {
//do nothing
}