IF条件与true / false比较

时间:2014-08-25 08:11:52

标签: php

嘿伙计我正在使用简单的功能来检查用户是否已尝试搜索某些内容。我的代码如下所示:

public function getNumberOfQuery(){
     $success = false;
     try{
        $con = new PDO( DB_HOST, DB_USER, DB_PASS ); 
        $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        $sql = "SELECT * FROM users WHERE username = :user LIMIT 1";
        $stmt = $con->prepare( $sql );
        $stmt->bindValue( "user", $this->getUsername(), PDO::PARAM_STR );
        $stmt->execute();
        while ($row = $stmt->fetch()){
            if ($row['query'] < $row['max_query'])
            return TRUE;
        }

    }catch(PDOExeption $e){
        echo $e->getMessage();
        echo $con->errorInfo();
    }         
 }

没什么特别的吗?我尝试回显$row['query']$row['max_query']并显示数据库中的正确数据。问题是我使用的是:

if ($data->getNumberOfQuery() == TRUE); {

// CODE 
}

问题是,我把man的查询大于数据库中的max_query,这里的代码仍然执行。它不应该对吗? 有人可以看看它并告诉我我做错了什么吗?我从不习惯使用TRUE / FALSE,所以也许我只是不理解它。

2 个答案:

答案 0 :(得分:2)

if ($data->getNumberOfQuery() == TRUE); {

尝试删除; 之后)

答案 1 :(得分:2)

其他人已经发现了语法错误,但这里有解释:

if (...); {
    //  ^ - wrong
   ...
}

如果条件为iftrue语句将执行以下语句。观察:

if (true)
    echo 'foo';
echo 'bar';

不使用括号,只有下一行“属于”if语句 如果要将整个代码绑定到if语句,请使用括号对其进行分组:

if (true) {
    echo 'foo';
    echo 'bar';
}

现在,你正在做的是:

if (...)
    ;

{
    ...
}

您立即使用if终止; 后的语句,因此if执行空语句。随后的代码块{..}总是被执行,因为它根本不依赖于if