Съжалявам, ако съм разбрал погрешно въпроса - кодът, който публикувахте, изглежда не дава резултата, който публикувахте, въпреки това, ето моите два цента; Мисля, че за да разрешите проблема, който имате с повтарянето на заглавките на таблицата в резултатите, трябва да поставите блока, който гласи:
echo '<tr>';
echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">Product Code</th>';
echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">Name</th>';
В страничен блок if, така че да се показва само веднъж:
if(!$displayed) {
$displayed = true;
echo '<tr>';
echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">Product Code</th>';
echo '<th style="border-color:#000000; border-style:solid; border-width:1px;font-size:10px;background-image:url(images/buts3.png);color:white"">Name</th>';
}
И не забравяйте да инициализирате $displayed на false before цикълът while.
В допълнение, но донякъде встрани от действителния въпрос, този код, който сте публикували, е много несигурен, тъй като е уязвим за атака, известна като sql инжекция. Препоръчвам ви да използвате нещо като PDO подготвени отчети, за да сте сигурни, че нямате проблеми със сигурността.