PHPでMySQLのTABLEデータを表示させる2

はてブログ登録して1年たって初めてコメントもらいました。

nyan4.hatenablog.com

以前書いたMySQLのデータをテーブル表示させるやつはレコードが複数でも大丈夫だと思ってました。

コメントもらった後確認してみたらできてなかったです。
ちゃんと確認できてませんでした。
すみませんでした。

で、コメントの返答ですが下ので複数レコードも大丈夫になってるはず。
DBの接続処理は省いてます。

$sql = 'SHOW TABLES';
$stmt = $dbh->query($sql);

while ($result = $stmt->fetch(PDO::FETCH_NUM)){
    $table_names[] = $result[0];
}

$table_datas = array();
foreach ($table_names as $key => $table_name) {
    $sql2 = "SELECT * FROM $table_name;";
    $stmt2 = $dbh->query($sql2);
    $table_datas[$table_name] = array();
    while ($result2 = $stmt2->fetch(PDO::FETCH_ASSOC)){
        $table_datas[$table_name][] = $result2;  // ここの配列への追加がまちがってた
    }
}

foreach ($table_datas as $table_name => $table_data) {
    echo "<h1>$table_name</h1>";
    if (empty($table_data)) {
        continue;
    }
    echo "<table border=1 style=border-collapse:collapse;>";
    echo "<tr>";
    // カラム名を表示
    foreach ($table_data[0] as $column_name => $val) {
        echo "<th>";
        echo $column_name;
        echo "</th>";
    }
    echo "</tr>";
    echo "<tr>";
    // レコードデータの表示
    // テーブル内のレコード数分ループ
    foreach ($table_data as $record_num => $record_data) {
         // レコード内のカラム数分ループ
        foreach ($record_data as $column_name => $val) {
            echo "<td>";
            echo $val;
            echo "</td>";
        }
        echo "</tr>";
    }
    echo "</table>";
}
?>

変数名を変えてみたけどわかりやすくなってるかな、
こんな説明でいいのだろうか…
参考になったらうれしいです。