Синтаксическая ошибка, неожиданное '}', ожидание, пока (T_WHILE) убивает меня

Я пытаюсь преобразовать некоторые довольно интенсивные страницы PHP в mysqli из mysql для версии 5 MySQL. Не хочу использовать PDO в это время.

База данных есть, простой общий запрос работает и отображается на странице PHP путем преобразования всего синтаксиса mysql в синтаксис mysqli, но для таких, как я, я не могу понять, где исправить эту ошибку. Я говорю, что это происходит в строке 449, и я перепробовал все выше и ниже этой строки. Ниже приведена ошибка, а ниже - код для строк с 432 по 449. Эта страница отлично работает в базе данных mySQL 4.

синтаксическая ошибка, неожиданное '}', ожидаемое время (T_WHILE) в C:\inetpub\wwwroot\xxx\carpoollocations.php в строке 449

Строка 332-449:

            } while ($myrowsel = mysqli_fetch_array($result,MYSQLI_BOTH));
echo "</TABLE>";
/*----------------------------------------------------------------
PAGING LINK - THIS IS USED FOR NEXT/PREVIOUS X RECORDS
----------------------------------------------------------------*/

    if ($reccount > 10) {
//IF THERE ARE MORE THAN 10 RECORDS PAGING
    $ttlpages = ($reccount / 10);
    if ($page < $ttlpages) {
    ?>

<HR>    <br>
<A HREF="<?php echo $thispage; ?>?posting=yes&page=<?php echo $page; ?>&reccount=<?php echo $reccount; ?>&searchcrit=<?php echo $searchcrit; ?>&<?php echo $pagevars; ?>">Next <?php echo $pagenorecords; ?> Records >></a> <br>

    <?php 
    } //END IF AT LAST PAGE
    } //END IF RECCOUNT > 10

__________________________________________________________________ Обновлено с новой информацией, которая выглядела бы как ответ: нет цикла "делать пока" в msqli.

Спасибо всем за внимание. Ну, это не точка с запятой после оператора while. Снял с той же ошибкой. Я не мог понять неожиданное '}' независимо от того, что я удалил или добавил. Также все кудри казались сбалансированными. Поскольку этот блок встречается по всей странице без синтаксических ошибок, кроме той, которая была ниже оператора while, я решил изолировать цикл "do while" в простой, поскольку в ошибке упоминается T_WHILE. Я изменил его и поместил время в верхней части цикла, и это сработало. Положив его обратно внизу, мы увидели другую ошибку.

Таким образом, это работает и показывает все данные из 2 столбцов.

while ( $row = mysqli_fetch_array($result, MYSQLI_ASSOC) ) {

                  echo $row["id"]." ---- ".$row["Location"]."<br />";

    }

Это запускает и создает ошибку "Неопределенная переменная: строка": теперь это другая ошибка, но это начало. Я буду работать над изменением цикла завтра. Я замечаю, что синтаксическая ошибка выше возникает, даже если я поставлю "die();" путь вверху вверху вверху страницы.

do {

              echo $row["id"]." ---- ".$row["Location"]."<br />";

}while ( $row = mysqli_fetch_array($result, MYSQLI_ASSOC) )

Любые мысли, если я иду в правильном направлении?

2 ответа

            } while ($myrowsel = mysqli_fetch_array($result,MYSQLI_BOTH));<!--Change to {
echo "</TABLE>";
/*----------------------------------------------------------------
PAGING LINK - THIS IS USED FOR NEXT/PREVIOUS X RECORDS
----------------------------------------------------------------*/

    if ($reccount > 10) {
//IF THERE ARE MORE THAN 10 RECORDS PAGING
    $ttlpages = ($reccount / 10);
    if ($page < $ttlpages) {
    ?>

<HR>    <br>
<A HREF="<?php echo $thispage; ?>?posting=yes&page=<?php echo $page; ?>&reccount=<?php echo $reccount; ?>&searchcrit=<?php echo $searchcrit; ?>&<?php echo $pagevars; ?>">Next <?php echo $pagenorecords; ?> Records >></a> <br>

    <?php 
    } //END IF AT LAST PAGE
    } //END IF RECCOUNT > 10

В вашем цикле while вы завершили его ; вместо { простая ошибка, которую легко сделать, но исправление которой должно исправить проблему. Если после этого все равно выдается ошибка, возможно, вам придется добавить новый } до конца сценария, чтобы закрыть цикл while.

Вы получаете неопределенную переменную $row, потому что цикл do...while обработает код, который в do{ } сначала и в первый раз переменная $row не зарегистрирована, а затем обработает while() и вернется к do{} 2-й раз это будет работать, но будет ошибка, которую вы должны напрямую использовать в цикле while для mysqli или mysql

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