Предупреждение:Назначение в состоянии
-
23-08-2019 - |
Вопрос
Одна вещь, которая всегда беспокоила меня, это то, что при проверке моих php-скриптов на наличие проблем я получаю предупреждение "bool-assign :Задание в состоянии", и я получаю их часто.например ,:
$guests = array();
$sql = "SELECT * FROM `guestlist`";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
$guests[] = $row['name'];
Есть ли другой способ получить несколько или все строки в объект или массив?Или в этом методе нет ничего плохого?
Решение
попробуйте сделать это вместо этого:
$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) не возвращает логическое значение.
Другие советы
На самом деле, я считаю, что это предупреждение, потому что вы можете совершить ошибку.Обычно в условном выражении вы имеете в виду делать:
if (something == something_else)
Но легко совершить ошибку и уйти:
if (something = something_else)
Так что, скорее всего, это предупреждение вам.Если PHP вообще чем-то похож на C, вы можете решить свою проблему с помощью набора круглых скобок вокруг вашего утверждения, например:
while(($row = mysql_fetch_assoc($result)))
Я считаю, что ответ Джереми немного неточен, потому что PHP свободно типизирован и обычно не утруждает себя такими различиями.