Acabar
Новичок
Ошибка в операторе while
Здраствуйте уважаемые. У меня по этому коду особо нет вопросов. Я знаю где тут ошибка.
Просто решил поделиться небольшим опытом. Запостил именно на этот раздел форума потому что больше некуда.
Поясню данный фрагмент. Не хочу создавать лишний объект sql, поэтому решил сделать запрос, собрать данные в массив
и делать другие запросы в тоже время обрабатывая данные массива.
На моё удивление появилась ошибка: Iorrect table name ''
Посидев 10 минут, тупо посмотрев в код, сделав пару отладок, я заметил что массив $modNames имеет на одно значение больше чем надо. И тут меня осинило: Ведь оператор while(statements) { code } будит выполнять code до тех пор пока statements не примет значение false. Всё правильно! Массив $modNames принял ещё одно лишнее значение false.
Решил проблему так:
Я запостил этот топик, так как за последний год это первая ошибка, которая меня очень удивила, хочу поделиться с другими.
Так же буду очень признателен, если посоветуете более оптимальный вариант этого фрагмента.
П.С. Просьба не спрашивать почему не хочу делать копию объекта sql. Просто не хочу и всё.
Здраствуйте уважаемые. У меня по этому коду особо нет вопросов. Я знаю где тут ошибка.
Просто решил поделиться небольшим опытом. Запостил именно на этот раздел форума потому что больше некуда.
Поясню данный фрагмент. Не хочу создавать лишний объект sql, поэтому решил сделать запрос, собрать данные в массив
и делать другие запросы в тоже время обрабатывая данные массива.
На моё удивление появилась ошибка: Iorrect table name ''
PHP:
$this->sql->query("SELECT modName FROM modules");
while($modNames[] = $this->sql->fetchAssoc());
foreach ($modNames as $value) {
echo $value["modName"];
$this->sql->query("SELECT * FROM `" . $value["modName"] . "`");
while($rows = $sql->fetchAssoc()) {
echo $rows[$value["modName"] . "Name"];
}
}
Решил проблему так:
PHP:
while($modNames[] = $this->sql->fetchAssoc());
array_pop($modNames);
Так же буду очень признателен, если посоветуете более оптимальный вариант этого фрагмента.
П.С. Просьба не спрашивать почему не хочу делать копию объекта sql. Просто не хочу и всё.
Интересно, есть ли ещё какие нибудь более оптимальные альтернативы?