人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのPEAR::MDB2で"CREATE TABLE hoge"のクエリを送るかどうかの基準として特定のテーブル(仮にhogeテーブル)が存在するかどうかの判定をしたいのですが、そのためのコードを教えてください
(ちなみに使用するDBはSQLiteです)


●質問者: leva
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:dB hoge MDB2 Pear PHP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● chuken_kenkou
●68ポイント

sqlite_masterという表に、表の定義情報が入っているようです。

表名='hoge'とすれば、以下のSQLで検索可能です。

SELECT * FROM sqlite_master WHERE type='table' AND name='hoge'

また、create table文で、「if exists」を指定すれば、「表が存在すれば表を定義し、存在しなければ何もしない」という指定になります。

create table if exists hoge
(c1 int,
 c2 varchar(10))
◎質問者からの返答

ありがとうございます。

前者の方法は知りませんでした。実際に試してみたらうまくいきました。全体としてのコードは以下のようなものです。

$sql = "SELECT * FROM sqlite_master WHERE type='table' AND name='hoge'";

$request = $db->query($sql);

if (!$request->fetchRow()){

$sql = "CREATE TABLE hoge(

c1 VARCHAR(20),

c2 INT

)";

$request = $db->query($sql);

}

方法としては後者の方がスマートなので、"IF NOT EXISTS"としてテーブルがないときに作成するように使用してみましたが、"MDB2::Error: Array"と言われて使えないようでした。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ