読者です 読者をやめる 読者になる 読者になる

やったこと

webサービスを作るときに考えたことを垂れ流します

phpでSQLiteの全データダンプするのめんどくさかった

phpスクリプトでSQLite3のデータベースの中の情報(生成したテーブルとかその中のデータとか)をダンプして表示したかったんだけど、意外とめんどうだった。

まずsqlite_masterという情報一覧用のテーブルを参照して全テーブルの名前を取得して、そこから一個ずつテーブルの中を見ていく方法しかなさそうだった。

こんな感じの処理なった。

//デバッグ関数、SQL内の全データをダンプする
function debug_dump_sql(){
  $db = new PDO('sqlite:./hoge.sqlite3');

  //全テーブルを表示
  echo "---- ALL_TABLES ----\n";
  $sql = "select * from sqlite_master";
  $stmt = $db->prepare($sql);
  $stmt->execute();
  $tables = $stmt->fetchall(PDO::FETCH_ASSOC);
  var_dump($tables);

  //テーブル内データを表示
  foreach ($tables as $table) {
    $table_name = $table["name"];
    echo "---- TABLE:".$table["name"]." ----\n";
    $sql = "select * from ".$table_name;
    $stmt = $db->prepare($sql);
    $stmt->execute();
    $columns = $stmt->fetchall(PDO::FETCH_ASSOC);
    var_dump($columns);
  }
  unset($db);
}

めっちゃめんどくさいんですけど、もっといい方法ないのかしら・・。