嘿伙计我正在使用简单的功能来检查用户是否已尝试搜索某些内容。我的代码如下所示:
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,所以也许我只是不理解它。
答案 0 :(得分:2)
if ($data->getNumberOfQuery() == TRUE); {
尝试删除; 之后)
答案 1 :(得分:2)
其他人已经发现了语法错误,但这里有解释:
if (...); {
// ^ - wrong
...
}
如果条件为if
,true
语句将执行以下语句。观察:
if (true)
echo 'foo';
echo 'bar';
不使用括号,只有下一行“属于”if
语句
如果要将整个块代码绑定到if
语句,请使用括号对其进行分组:
if (true) {
echo 'foo';
echo 'bar';
}
现在,你正在做的是:
if (...)
;
{
...
}
您立即使用if
终止;
后的语句,因此if
执行空语句。随后的代码块{..}
总是被执行,因为它根本不依赖于if
。