Синтаксическая ошибка, неожиданное '}', ожидание, пока (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