警告:条件分配

时间:2009-04-05 05:44:01

标签: php mysql coding-style variable-assignment conditional-statements

有一件事总是让我感到困惑的是,当我检查我的php脚本中的问题时,我收到警告“bool-assign:Assignment in condition”,我得到了很多。 e.g:

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

是否有不同的方法可以将多个或所有行放入对象或数组中?或者这种方法没有错?

2 个答案:

答案 0 :(得分:13)

尝试这样做:

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

我相信php是警告,因为$ row = mysql_fetch_assoc($ result)没有返回布尔值。

答案 1 :(得分:3)

实际上,我相信这是警告,因为你可能犯了一个错误。通常在有条件的情况下,你的意思是:

if (something == something_else)

但是很容易犯错并且去:

if (something = something_else)

所以它可能会警告你。如果PHP完全像C一样,你可以用你的语句周围的一组括号来修复你的问题,如下所示:

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

我相信Jeremy的回答略有不同,因为PHP的类型很松散,并且通常不会为这些区别而烦恼。