4

一直困扰着我的一件事是,在检查我的 PHP 脚本是否有问题时,我收到警告“bool-assign : Assignment in condition”,而且我得到了很多。

例如:

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

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

4

2 回答 2

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)没有返回布尔值而发出警告。

于 2009-04-05T05:49:20.173 回答
3

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

if (something == something_else)

但是很容易犯错就走:

if (something = something_else)

所以它可能会警告你。如果 PHP 与 C 完全一样,您可以在语句周围使用一组括号来解决您的问题,如下所示:

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

我相信 Jeremy 的回答有点不对劲,因为 PHP 的类型很松散,而且通常不会理会这些区别。

于 2009-04-05T05:54:43.437 回答