申し訳ありませんが、質問を誤解した場合は、投稿したコードで投稿した出力が生成されないようですが、これが私の2セントです。結果全体でテーブルヘッダーが繰り返されるという問題を解決するには、次のようなブロックを配置する必要があると思います。
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ブロックでは、1回だけ表示されます:
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に初期化することを忘れないでください whileループ。
さらに、実際の質問とは別に、このコードはSQLインジェクションと呼ばれる攻撃に対して脆弱であるため、非常に安全ではありません。セキュリティ上の問題が発生しないように、PDOプリペアドステートメントなどを使用することをお勧めします。