2

说明与问题

好的,我们的表中有以下列,

[用户名] - [消息] - [状态] - [id]

在某些指定的 PHP 页面中,我们使用 while 循环来发布存储在数据库中的所有行。

好的,但是现在我想检查该表中是否有任何行,如果没有,则回显错误。

没关系,就这么简单:

$check = $fetch->rowCount();

进而

if ($check == 0) { }

但是现在,我想检查“状态”列是否为 0。

因此,如果没有列 'status' 值为 0 的行,它将回显一条消息。如果根本没有行,它将回显一条消息。

如果存在列 'status' 值为 0 的行,它将回显所有行。

但至少对我来说有一些问题,这样做。

问题

我不能在循环内执行所有 IF 语句检查,因为如果没有行,循环就无法运行。

但是好的,我们可以检查循环之外是否有行,但是我如何检查是否有行+它们的状态列的值是否高于“0”?

我让它以某种方式工作,但不像我想要的那样..

如果同时存在列'status'值为0的行+列status值大于0的行,它将回显消息+显示行,这不应该像这样工作!

这是我尝试构建的代码:

        $check = $fetch->rowCount();
        if ($check == 0) {
            echo '<br /> EMPTY';
        }
        while($row = $fetch->fetch( PDO::FETCH_ASSOC )) {
            if ($check > 0 && $row['status'] == 0) {
                echo 
                '<div class="background">'.$row['email'].' <span style="margin-left: 10px;"><font color="#ff0000">UNANSWERED</font></span><span id="right"><a href="index.php?recover='.$row['recover_id'].'">Read More</a></span></div><br />
                ';
            } else {
                echo 'There are no rows!';
            }
        }

感谢您的帮助!

4

2 回答 2

1

试试这个:

$check = $fetch->rowCount();
if ($check == 0) {
    echo '<br /> EMPTY';
}
else
{
        while($row = $fetch->fetch( PDO::FETCH_ASSOC )) {
            if ($check > 0 && $row['status'] == 0) {
                echo "status  0";
                // or echo "<br/> BLANK!";
            }
            else
            {
                echo '<div class="background">'.$row['email'].' <span style="margin-left: 10px;"><font color="#ff0000">UNANSWERED</font></span><span id="right"><a href="index.php?recover='.$row['recover_id'].'">Read More</a></span></div><br />';
            }           
       }
}
于 2013-04-01T02:02:51.507 回答
1

But now, I want to check if column 'Status' is 0. So if there are no rows with columns 'status' with value 0, it will echo a message. If there are no rows at all, it will echo a message. If there are rows with column 'status' with value 0, it will echo all rows.

为什么不在您的WHERE子句中将该条件发送到数据库

SELECT username,message,status,id FROM yourTABLE where status=0

所以当有这样的行时,它会显示它们。如果没有这样的行,那么您的行数将为 0,然后您可以相应地回显消息

提示

从表中获取所有行,然后将它们带到 PHP 中只是丢弃其中的大部分,就像去水果店购买所有可用的水果,把它们带回家然后说不,我不需要橙子、苹果、杏子等等等等。您必须将条件发送到您的数据库,而不是在没有任何条件的情况下将所有数据带入,然后将条件放入 PHP 中。

于 2013-04-01T02:05:25.867 回答