警告:分配條件 (Warning: Assignment in condition)


問題描述

警告:分配條件 (Warning: Assignment in condition)

One thing that has always bugged me is that when checking my PHP scripts for problems, I get the warning "bool-assign : Assignment in condition" and I get them a lot.

For example:

$guests = array();
$sql = "SELECT * FROM `guestlist`";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
    $guests[] = $row['name'];

Is there a different way to get multiple or all rows into an object or array? Or is there nothing wrong with this method?


參考解法

方法 1:

Try doing this instead:

$guests = array();
$sql = "SELECT * FROM `guestlist`";
$result = mysql_query($sql);
while(($row = mysql_fetch_assoc($result)) !== false)
    $guests[] = $row['name'];

I believe PHP is warning because of the $row = mysql_fetch_assoc($result) not returning a Boolean.

方法 2:

Actually, I believe it's warning because you could be making a mistake. Normally in a conditional, you mean to do:

if (something == something_else)

But it's easy to make a mistake and go:

if (something = something_else)

So it's likely warning you. If PHP is anything at all like C, you can fix your problem with a set of parentheses around your statement, like so:

while(($row = mysql_fetch_assoc($result)))

I believe Jeremy's answer is slightly off, because PHP is loosely typed and generally doesn't bother with such distinctions.

(by MoakJeremy StanleyDan Fego)

參考文件

  1. Warning: Assignment in condition (CC BY-SA 3.0/4.0)

#conditional-statements #MySQL #PHP #coding-style #variable-assignment






相關問題

在 SSRS 中使用條件來提高可見性 (using conditionals in SSRS for visibility)

Smarty - {IF} {/IF} 內的條件太多 (Smarty - Too many conditions inside {IF} {/IF})

awk 如果有多個條件拋出錯誤 (awk if with multiple condition throws error)

正則表達式錯誤,嵌套標籤 (Regex error, nested tags)

警告:分配條件 (Warning: Assignment in condition)

JavaScript 中的條件語句 (Conditional Statement in JavaScript)

與 linus 條件 '-z' '-n' 混淆 (Confuse with the linus conditions '-z' '-n')

如果條件為真,則將表達式添加到循環中 (if condition is true, add an expression to a loop)

為什麼用多態性替換條件有用? (Why is replacing conditionals with polymorphism useful?)

如何使用條件將一個數據框列的值與另一個數據框列的值匹配? (How do you match the value of one dataframe's column with another dataframe's column using conditionals?)

使用另一個數據框的條件創建一個新列 (Create a new column with a condition of another dataframe)

排除具有空值的 Python 列表 (Excluding Python Lists With Empty Values)







留言討論