За последние 24 часа нас посетили 34958 программистов и 1757 роботов. Сейчас ищут 849 программистов ...

Ошибка syntax error, unexpected 'while' (T_WHILE)

Тема в разделе "PHP для новичков", создана пользователем bonev, 11 дек 2016.

Метки:
  1. bonev

    bonev Новичок

    С нами с:
    11 дек 2016
    Сообщения:
    21
    Симпатии:
    0
    Написал скрипт но выдает ошибку, но не понимаю в чем проблема? Помогите пожалуйста, буду очен благодарен

    PHP:
    1. <?php
    2. //установить имена ГМ в системе, включая их тег
    3. //можно сделать этот массив автоматизированный для запроса базы данных, но мне нравиться этот простой
    4.  
    5.     $query_staff = "SELECT R.UserUID,P.CharName
    6. FROM PS_UserData.dbo.Users_Master AS R
    7. INNER JOIN PS_GameData.dbo.Chars AS P
    8.    ON R.UserUID = P.UserUID
    9. WHERE P.LoginStatus > 0 and (R.Status >= 16 or R.GS != 0 or R.GM != 0 or R.AdminLevel != 0 or R.Admin != 0)";
    10.     $result_staff = odbc_exec($dbConn,$query_staff);
    11.     while($online_staff = odbc_fetch_array($result_staff)))
    12.     {
    13.  
    14.     echo ("<p>".utf8_encode($online_staff['CharName'])." <font color='green'>Online</font></p>");
    15.     }
    16.  
    17. ?>
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
     
    MouseZver нравится это.
  3. bonev

    bonev Новичок

    С нами с:
    11 дек 2016
    Сообщения:
    21
    Симпатии:
    0
    У меня БД MSSQL
    --- Добавлено ---
    Спасибо всем, решил проблему.
    /close
     
  4. sevskeef

    sevskeef Новичок

    С нами с:
    11 дек 2016
    Сообщения:
    8
    Симпатии:
    0
    Возможно приходит нулевой/пустой результат из базы. Попробуйте поставить проверку, например так:
    Код (Text):
    1. if($result_staff = odbc_exec($dbConn,$query_staff))
    2.     while($online_staff = odbc_fetch_array($result_staff)))
    3. ...
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
    какой пустой? у него синтаксическая ошибка 1 пост уже описал
     
  6. sevskeef

    sevskeef Новичок

    С нами с:
    11 дек 2016
    Сообщения:
    8
    Симпатии:
    0
    Работа ведется с MSSQL через ODBC. Вы никогда не получите описание ошибки от мелкомягких. Вам просто придет сообщение (в лучшем случае!!) что произошла ошибка.
    В данном случае пустой результат запроса не есть ошибка, а вот в указанной строке в odbc_exec($dbConn,$query_staff) вообще не известно что придет. Вот "неожиданный while " и выскакивает. Как вариант . К тому же в SQL, даже таком извращенном как MSSQL отсутсвует директива while ...
    Я не прав?

    PS
    Кроме того, проверять на отсутсвие результата есть неплохой стиль программирования ;)
     
  7. bonev

    bonev Новичок

    С нами с:
    11 дек 2016
    Сообщения:
    21
    Симпатии:
    0
    Была лишняя скобка в
    Код (Text):
    1. odbc_fetch_array($result_staff)))
    2. а должно быть так
    3. odbc_fetch_array($result_staff))
    4. и поменять скобку
    5. c { на }