極めて初心者らしい質問になりますがよろしくお願いします。

Webシステムはステートレスとよく言われますが、PHP側の検証が成立せずDBへの登録が進行できなかった場合、送信されてきた状態の画面を維持したい、ということがあると思います。
逆に、DBへの登録まで成立した場合は(他へ遷移せず当該画面で継続して処理していくケース)、
入力されていた内容のほとんどをクリアして画面を再表示したい という仕様を望んでいます。

送信結果を再格納するケースと、送信結果を再格納しないケースに大別できますが、一般的にはどういう解決策で、制御すべきなのでしょうか?
下記は送信された結果を変数に蓄え、それを再格納するようなHTML&PHPです。
・この仕様では、画面上の項目数分 変数を用意しなければならない。
・正常にDBへの登録へ進行した場合、これら変数をクリアしなければならない。

<input type="text" name="tcd" id="tcd" style="width: 5em;" value="<?php if(isset($tcd)){ echo $tcd; } ?>" />

と思いました。こういう達成の仕方が一般的なのでしょうか?
セッション変数を使うにしても、維持とクリアの制御が必要ですよね??

フレームワークを使わない場合、どういった対策をとるのが一般的なのか知りたいです。
よろしくお願い致します。

<<追記>>
$dataに蓄えたい内容は、この中のinput要素

<div class="appControl">
    <table>
        <tr>
                <td class="extd">得意先</td>
                <td><input name="tcd" id="tcd" type="text"></td>
                <td><input name="tname" type="text" readonly=""></td>
                <td><input name="tperson" type="text" readonly=""></td>
                <td class="extd">納品先</td>
                <td><input name="scd" id="scd" type="text"></td>
                <td><input name="sname" type="text" readonly=""></td>
                <td><input name="sperson" type="text" readonly=""></td>
            </tr>
        </table>
</div>

<div class="appLines">
    <table>
        <tr>
            <td><input name="cd[]" type="text" value=""></td>
            <td><input name="name[]" type="text" readonly="" value=""></td>
            <td><input name="capa[]" type="text" readonly="" value=""></td>
            <td><input name="scond[]" type="text" readonly="" value=""></td>
            <td><input name="lot[]" type="text" value=""></td>
            <td><input name="amount[] type="text" value=""></td>
            <td><input name="unitp[]" type="text" readonly="" value=""></td>
            <td><input name="totalp[]" type="text" readonly="" value=""></td>
            <td><span class="errmark"></span></td>
            <td><button class="rowins" type="button">+</button></td>
            <td><button class="rowdel" type="button">-</button></td>
        </tr>
        <tr>
            <td><input name="cd[]" type="text" value=""></td>
            <td><input name="name[]" type="text" readonly="" value=""></td>
            <td><input name="capa[]" type="text" readonly="" value=""></td>
            <td><input name="scond[]" type="text" readonly="" value=""></td>
            <td><input name="lot[]" type="text" value=""></td>
            <td><input name="amount[] type="text" value=""></td>
            <td><input name="unitp[]" type="text" readonly="" value=""></td>
            <td><input name="totalp[]" type="text" readonly="" value=""></td>
            <td><span class="errmark"></span></td>
            <td><button class="rowins" type="button">+</button></td>
            <td><button class="rowdel" type="button">-</button></td>
        </tr>
    </table>
</div>