Ошибка PHP Parse: синтаксическая ошибка, неожиданный 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 spotted - = - оператор присваивания, поэтому ранее ваш код менял $voornaam на NULL, а затем проверял, был ли результат оценен как true (который, конечно же, никогда не будет - так что второй блок всегда будет выполняться)

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

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