这个功能有什么问题?

时间:2010-05-22 08:07:44

标签: php

    function get_ibo_id() {
    if($registerquery = $this->conn->query("SELECT ibo_id FROM fasttrack WHERE count <    
                   8 && flag = 1 ")){
    $this->increase_count();
    while ($row = $registerquery->fetch_assoc()) { 
           return $row[ibo_id];
        }
    }
    else return "No id";
}

即使条件不满意,它总是进入if块... 疯了

2 个答案:

答案 0 :(得分:4)

好的$ registerquery永远不会返回false,即使你的条件不满足......

在if语句中你必须得到一个变量才能返回true或false ...

我会做的是这样的事情(你必须熟练使用你的OOP代码):

function get_ibo_id() {

$registerquery = $this->conn->query("SELECT ibo_id FROM fasttrack WHERE count < 8 && flag = 1 ");
if (mysql_num_rows($registerquery) > 0) {
$this->increase_count();
    while ($row = $registerquery->fetch_assoc()) { 
           return $row[ibo_id];
        }
    }
    else return "No id";
}

它进行查询,检查你是否得到超过0的结果并做了必须做的事情,否则回显错误......

的Ladislav

答案 1 :(得分:0)

我认为问题在于

$this->conn->query(...)
没有像您预期的那样返回FALSE。
如果查询生成空结果集,则mysql_query仍会返回资源,而不是FALSE。 您应该使用
mysql_num_rows($registerquery)

检查返回的行数