在检查数据库中的某些内容时

时间:2014-03-06 15:27:32

标签: php mysql

我想检查数据库中是否有一个小时,但如果我在数据库中有超过一小时,则输出两次,如果我有三次...

在这种特殊情况下,这给了我:9(蓝色)然后9(红色)

$result = mysqli_query($con, 'SELECT * FROM consulta
                  WHERE professional=1
                  AND client=0');

while ($row = mysqli_fetch_array($result)) {

if ($row['hora']=='09:00:00') { echo '<p class="blue">9</p>'; } 
else { echo '<p class="red">9</p>'; }

}

我有一个包含列的MySql数据库:id,professional和hour。我已经存储了2个小时,如果我回复$row['hora'] 09:00:00 and 10:00:00

,这就是我得到的

在这种情况下,if应该只给我9个蓝色,因为它在数据库中。我不明白为什么会这样。我该如何解决这个问题?

这是MySql数据库的结构: enter image description here

3 个答案:

答案 0 :(得分:2)

据推测,您正在制作日历等。

您正在使用的查询将返回所有行(无论小时数如何,您都会循环遍历每一行)。如果你想检查是否存在特定的小时,你可以建立一个小时数组:

$result = mysqli_query($con, 'SELECT * FROM consulta
                  WHERE professional=1
                  AND client=0');
$hours = array();
while ($row = mysqli_fetch_array($result)) {
    $hours[$row['hora']] = $row;
}

现在检查我们可以做的具体时间:

if (!empty($hours['09:00:00'])) { 
    echo '<p class="blue">9</p>'; 
}else { 
    echo '<p class="red">9</p>';
}

编辑:说明

在第一个循环中,我们正在构建一个数组。这看起来像是:

$hours = array(
    '08:00:00' => $dataForThisRow,
    '09:00:00' => $dataForThisRow
);

上面的'08:00:00'被称为key。每个密钥都是在数据库中找到的时间。

要检查数据库中是否有条目,我们可以检查是否存在非空键。因此我们使用:

if(!empty($hours['09:00:00'])

如果if的{​​{1}}的值为$hours,则此key将会运行。如果没有密钥,那么'09:00:00'的其他部分将会运行。

答案 1 :(得分:0)

更改您的SQL查询,如下所示:

    $query = "SELECT TIME_FORMAT(hora,'%H:%i:%S') FROM consulta
                  WHERE professional=1
                  AND client=0";

    $result = mysqli_query($con, $query);

答案 2 :(得分:0)

您正在与此值进行比较:09:00:00,但数据库似乎已存储此另一个:9:00:00