Я пытаюсь преобразовать некоторые довольно интенсивные страницы 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) )
Любые мысли, если я иду в правильном направлении?
} 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