[PHP-users 1170] Re: PHP からデータベースのテーブル存在確認(解決)

Kenji Tagami php-users@php.gr.jp
Mon, 13 Aug 2001 15:32:43 +0900


 田上です。
 皆様、早速のアドバイスをありがとうございました。
 また、1つのスレッドに2つの質問を書いて混乱をさせてしまい、
申し訳ありません。

On Mon, 13 Aug 2001 13:31:38 +0900
Seto <seto@cii.gr.jp> wrote:
> 以前のスレッドで以下のものが参考になると思います。(そのままかも)
> 
> [PHP-users 555] PostgreSQLのテーブル一覧の取得 

 そのスレッドそのものでした。
 過去ログも探したのですが、探し方が悪かったようです。
 どうもありがとうございました。

On Mon, 13 Aug 2001 13:44:47 +0900
Tatsuo Ishii <t-ishii@sra.co.jp> wrote:
> # 全然PHPじゃない:-<

 申し訳ありません。PHPからの操作〜としか頭に無かったので…
 以後、投稿先に気を付けます。


On Mon, 13 Aug 2001 13:50:55 +0900
"新開連三" <rshinkai@hyperweb.co.jp> wrote:
> psql -El
> とするとPogtgreSQLがどうやってデータベース名を
> 取得しているか分かります。

 -E を付けての \d コマンドの SQL 文が非常に為にありました。
 ありがとうございます。


> 2.テーブル が既に存在しているかの確認方法
 の実際のソースですが、

function TABLECheck($table_name) {
  // 既存テーブル名取得 SQL 文
  $cktabsql = "SELECT c.relname FROM pg_class c WHERE c.relkind = 'r' AND c.relname !~ '^pg_';";

  // SQL 文の実行
  @$result = pg_exec($cktabsql);

  // SQL 文の実行結果から行数列数の取得
  $rows = pg_numrows($result);
  $cols = pg_numfields($result);

  // 結果の内容を取得 (既存テーブル名取得)
  for ($x = 0; $x < $rows; $x++) {
    for ($y = 0; $y < $cols; $y++) {
      $existing_table_name[] = pg_result($result,$x,$y);
    }
  }

  foreach ($existing_table_name as $mc) {
    if ($mc == $table_name) {
      echo "$table_name は既に存在しています。";
      exit;
    } else {
      // テーブル新規作成の SQL 文
  }
}

※プログラム的に多々問題があるかと思いますが、ご容赦下さい。

--
Kenji Tagami ( akatsuki@m78.com )