PHPでMySQLのTABLEデータを表示させる2
はてブログ登録して1年たって初めてコメントもらいました。
以前書いた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>"; } ?>
変数名を変えてみたけどわかりやすくなってるかな、
こんな説明でいいのだろうか…
参考になったらうれしいです。