php!isset和empty不工作

时间:2014-06-30 21:46:20

标签: php mysql isset

把头发拉出来,必须明显,但今天我看不到它。

我为我们拥有的应用构建了一个小型监控工具。我想在数据库中进行检查,以确保后端脚本正常工作,数据不会超过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>';
            } 

2 个答案:

答案 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!';
}