Имхо, задача поставлена неверно. Вы пытаетесь навязать С++ рефлексию, которой в нем нет, не было и не надо.
Вернитесь к более общей задаче, которую вы решаете, и ищите более вменяемое решение. Фабрику, например.
sonnenasche, с набора здесь же, сверху - "тестирование".
И чтения ответов, в которых давали ссылки на учебники, статьи, более конкретные запросы в гугль.
Для начала стоит определиться с тегами.
Все-таки на бэке или на фронте? В пыхе или жаваскрипте?
mPDF, например, без проблем выгонит сформированный HTML-код в PDF, с богатыми плюшками вроде повторения шапки на каждой странице.
hint000, ЕМНИП, у Пратчетта был гений, которого по-всякому увечил каждый правитель, которому он творил чудеса, но он умудрялся создать себе механические глаза, серебряные руки и т.п., пока последний правитель не понял намек и не казнил его (хотя, согласно договору, обещал этого не делать).
Следующий ваш образовательный проект может оказаться бесподобным, но вы сами себе запретите им заниматься.
Заказчик может потребовать, чтобы вы не использовали наработки, сделанные в ходе работы на него, в других проектах. Это вполне адекватно, но это не о "подобных проектах", а о конкретном коде и решениях.
А вот времена, когда можно было убить архитектора, чтобы он не повторил шедевра, все-таки уже по большей части прошли.
Вы спрашиваете о решении, не сформулировав проблему. Если данные сохраняются в одно и то же место - естественно, они перезаписывают друг друга. Ваш "вариант" просто делает это медленно и печально. А проблема-то в чем?
Sergey Kuzmenko, он уже испортил айдишники, теперь первая же замена - 0 на 1 - выдаст ошибку, потому что id = 1 уже есть у следующей записи. Роман, update tablename set id = id + 1 order by id DESC;
И то же самое прогнать по связанным таблицам.
ettaluni, если вам хотелось интересных способов - стоило указать язык. Например, в Крестах такой способ заинтересуешься реализовывать, а в ЖабоСкрипте он пишется легко, но не защитит от банальных опечаток.
ettaluni, есть - когда базовые структуры выстраиваются в портянку, которую можно описать одним названием функции/класса/метода и убрать с глаз долой до тех пор, пока не понадобится детально в ней разбираться.
tgarl, да это видно, что вы не понимаете. Вы приводите пару строчек, в которых наблюдаете очевидную херню в данных. Откуда она там появилась - вам по этим строчкам не скажет ни один ясновидящий. Очевидно только, что до этих строчек. И если значение переменной - имя другой переменной с $, скорее всего, это означает, что где-то выше по коду именно этот текст ей и присваивается.