带有OR运算符的IF语句不起作用

时间:2019-06-10 16:48:55

标签: php

我认为原来是一个带有IF运算符的简单||语句不起作用。我只是忽略了这段代码中的某些内容吗?

如果我删除||运算符并分别测试每个条件,则该方法有效。但不是下面显示的方式

$sql = "SELECT * FROM `Projects` WHERE `EmpID` = '$eID'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while ($row = $result->fetch_assoc()) {
        if ($row["ProjectStatus"] != 'Cancelled' || $row["ProjectStatus"] != 'Complete') {
            $imgnum = rand(0, 100);
            echo '
                <a href="index.php?proj=' . $row["ProjectSubDomain"] . '&ProID=' . $row["ProjectID"] . '">
                <div class="card mb-10" style="width:350px">
                    <img class="card-img-top img-fluid" src="https://picsum.photos/275/100/?image=' . $imgnum . '" alt="Card image">
                    <div class="card-img-overlay text-w-glow">
                        <h3 class="card-title">' . $row["ProjectName"] . '</h3>
                        <p class="card-text">' . $row["ProjectType"] . '</p>
                    </div>
                    <div class="card-footer">
                        Project Status: ' . $row["ProjectStatus"] . '
                    </div>
                </div>
                </a>
                <br>
            ';
        }
    }
} else {
    echo "No Current Projects";
}

在我的疏忽大意之时,有人可以提供帮助吗?谢谢。

2 个答案:

答案 0 :(得分:1)

完成或取消匹配。我会的:

if(!in_array($row["ProjectStatus"],  array('Cancelled', 'Complete'))) {

答案 1 :(得分:1)

如果您使用||,它将无法使用,因为如果状态为“完成”,则与“已取消”状态不同,反之亦然,因此,您告诉它将“已完成”和“已取消”作为好。您必须使用&&代替。

if ($row["ProjectStatus"] != 'Cancelled' && $row["ProjectStatus"] != 'Complete') {