2013-11-16 3 views
-1

Я пытаюсь достичь следующего: я запрашиваю у моей базы данных SQL запрос с помощью SELECT * FROM subjects. После этого я запрашиваю массив, используя mysqli_fetch_assoc. До этого момента все в порядке. Проблема в том, что когда я пытаюсь изменить в каждом цикле значение $ genero, зависящее, если оно равно 1 или 0. Но значение $ genero никогда не изменяется, оно всегда равно 1, и я уверен, что массив выбирает 0 и 1. Любая идея, пока значения $ genero не меняются через цикл?Почему мой оператор if работает не так, как я ожидаю?

while ($subject = mysqli_fetch_assoc($result)) { 
if ($subject["sexo"] = 1) { 
    $genero = "<img src='images/hombre.png' />"; 
} else { 
    $genero = "<img src='images/mujer.png' />"; 
} 
    echo $genero; 
} 
+0

Put 1 внутри кавычек, он не может быть целым числом исходя из базы данных, но Inked быть строкой –

+2

@scrowler: PHP неявно конвертирует между двумя. –

ответ

8

Ваш оператор сравнения ошибочен. Вы используете =, который является заданием оператором. В вашем примере это всегда будет правдой. Вам необходимо использовать ==, что соответствует .

if ($subject["sexo"] = 1) { 

должен быть

if ($subject["sexo"] == 1) { 
+0

И поскольку выражение оценивается в 1, оператор if всегда прав ... – Floris

+0

Если вы говорите о назначении вообще, то нет, оно не всегда будет истинным. '$ x = 0' не оценивает ничего правдоподобного. –

+0

Я сказал «выражение». Правая рука является константой '1'. Я согласен, что это не так для выражения _any_, но это верно для _this_ one. – Floris

0

В if заявлении вы должны использовать двойной знак равенства: if (a == b)

Смежные вопросы