Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданный T_IF

Я посмотрел на многие другие вопросы, но не могу найти в этом свой ответ. вот моя синтаксическая ошибка (необъявленный T_IF):

while(($rij1 = mysql_fetch_object($result1))
and( if ($voornaam=NULL) {
            $rij2 = ' ';}
elseif($voornaam!=NULL){
            $rij2 = mysql_fetch_object($result2);})

Я посмотрел на строку перед синтаксисом, но не смог найти, что не так... Кто-то знает это?

1 ответ

Решение

Попробуйте переписать ваш код как:

while ($rij1 = mysql_fetch_object($result1))
{
    if ($voornaam === NULL) 
    {
        $rij2 = ' ';
    } 
    else
    {
        $rij2 = mysql_fetch_object($result2);
    }
}

Изменить: исправил ваше состояние в первом ifкак заметил @andrewsi - = является оператором присваивания, поэтому ранее ваш код менялся $voornaam в NULL, а затем проверка, если результат оценивается как true (что, конечно, никогда не будет - поэтому второй блок всегда будет выполняться)

В исходном коде вы используете and оператор - предположительно, увидев, что он используется в некоторых хорошо значимых, но плохо закодированных примерах, таких как mysql_connect(...) or die('an error occurred');,

В этом примере происходит то, что результат первого утверждения - mysql_connect() - проверено. Если он оценивается как true, второй оператор никогда не выполняется, но если он оценивается как false, то второй оператор - die('an error occurred'); - выполнен. Как вы только что обнаружили, этот паттерн сбивает с толку и его лучше избегать.

Другие вопросы по тегам