把头发拉出来,必须明显,但今天我看不到它。
我为我们拥有的应用构建了一个小型监控工具。我想在数据库中进行检查,以确保后端脚本正常工作,数据不会超过15分钟。如果在特定时间范围内没有返回任何记录,则应弹出一条消息,说明要检查脚本。如果它们没有返回,它应该是一个空的数据集,我应该收到一条消息。
问题是,我无法使用空()或!isset工作。实际上无论我使用!empty(),empty(),isset()还是!isset(),我的$ tripped变量都不会被绊倒。我有这个工作用于其他警报,但这个似乎很顽固,我不知道我错过了什么。
PS我知道mysql_已经过时了。
相关的代码:
$ldap_check = mysql_query("SELECT
*
FROM ldap_conns
WHERE DATETIME > DATE_SUB(NOW(), INTERVAL 15 MINUTE)
order by DATETIME DESC
LIMIT 1");
while($row = mysql_fetch_array($ldap_check))
{
if (empty($row['DATETIME']))
{
echo '<b><font color=blue><a href="server_check.php">Stale Data</a>: </font> <font color=red>LDAP data is old, check script!</font><br>' . $row['DATETIME'];
$tripped='Yes';
}
}
if ($tripped!='Yes')
{
echo '<a href="server_check.php"><b><font color=blue>Stale Data</a>: ' . $row['DATETIME'] . '</font></b> <font color=green> No Problems Found<br></font>';
}
答案 0 :(得分:2)
您的查询中包含以下条件:
WHERE DATETIME > DATE_SUB(NOW(), INTERVAL 15 MINUTE)
所以我不知道$row['DATETIME']
对于任何获取的行都是空的(尽管你实际上只获取了一行......)。
答案 1 :(得分:2)
你做错了...想要检查是否有旧物品?使用计数!没有理由从表中的所有记录中选择所有字段。这是错误的使用数据库!使用count,并在DATETIME字段上创建索引!
$result = mysql_query("SELECT
count(*) old_items
FROM
ldap_conns
WHERE
DATETIME < DATE_SUB(NOW(), INTERVAL 15 MINUTE)");
$row = mysql_fetch_row($result);
if ($row['old_items']) {
echo 'There is '.$row['old_items'].' old items!';
}