在带有额外条件的while循环中使用mysql_fetch_assoc

时间:2013-05-28 08:04:18

标签: php

当我使用带有额外条件的mysql_fetch_assoc应用while循环时,为什么$ row为空,但是当没有额外条件时,返回一些东西,这是否合乎逻辑?

while ($row = mysql_fetch_assoc($result) 
        && $gen->getMailsSent() < 499) {
     //blah blah
}

在上面的代码中,编译器输入循环,但$ row为空

while ($row = mysql_fetch_assoc($result)) {
     //blah blah
} 

在这一个,编译器仍然进入循环,但然后$ row返回一些东西,这对我来说我不明白并且不符合逻辑,有人可以解释为什么会发生这种情况吗?

3 个答案:

答案 0 :(得分:3)

while (($row = mysql_fetch_assoc($result))
        && $gen->getMailsSent() < 499) {
     //blah blah
}

试试这个。你的问题是优先的 - 你实际上告诉它

$row = (mysql_fetch_assoc($result) && $gen->getMailsSent() < 499)

请参阅http://php.net/manual/en/language.operators.precedence.php

“&安培;&安培;”在列表中的“=”之前,所以首先评估它。

答案 1 :(得分:1)

while (($row = mysql_fetch_assoc($result)) 
        && $gen->getMailsSent() < 499) {
     //blah blah
}

实际上它不应该是空的,它应该是一个布尔值。

答案 2 :(得分:0)

Use while loop like this:

while (($row = mysql_fetch_assoc($result))  && ($gen->getMailsSent() < 499)) {
    code goes here..
}
希望这会有所帮助..