• ベストアンサー

sqlite+phpでのテーブル作成

こんばんは php+sqlite+pdoで掲示板を作ろうと思っているのですが - $db = new PDO('sqlite:test555.db','', ''); $query = "CREATE TABLE テーブル名 (テーブル内容)"; $db->query($query); //以下掲示板表示処理など - とした場合、すでにテーブルが存在していてもエラーが出ずに掲示板のデータを表示してしまいます。 掲示板の機能としてはこれで動いているので問題ないのですが、プログラム的に掲示板にアクセスするたびにCREATE TABLEを実行しても良いものなのでしょうか? 出来ればテーブルが存在しない場合のみにCREATE TABLEを実行したいのですがその場合はどのように書けばいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.4

「エラーが無い」のではなく、PDOStatement::errorCode()などでチェックしてないから無視されてるだけです。 今後のために以下ページを読んでエラー対処もしましょう。 http://jp.php.net/manual/ja/pdo.error-handling.php table 存在チェックは、No3の御回答のようにsqlite_master に問い合わせるか、 create table if not exists [tablename] () のように、if not exists を入れてやれば、tableが存在すればcreate実行はされないし、エラーもでません。

anbsd
質問者

お礼

ありがとうございます。 皆様のアドバイスありがたいです。 参考URLなども頂いているので確認させて頂きます。 レス下さった方ありがとうございました。

その他の回答 (3)

noname#243182
noname#243182
回答No.3

「CREATE TABLE」に先立ち「SQLITE_MASTER」テーブルへ問い合わせをすると良いでしょう。

参考URL:
http://www.sqlite.org/faq.html#q7
anbsd
質問者

お礼

ありがとうございます。

  • okweb-goo
  • ベストアンサー率29% (283/952)
回答No.2

どんな掲示板を望むのか不明ですが、このまま完成としたら、閲覧者が来るたび新規テーブルが増えて、掲示板にならないでしょう。データが増えていくのは掲示板の中身であって掲示板の数では有りませんよね。 「CREATE TABLE」をやるのはあなたの構築時一回のみでよく、PHPで自動発生する必要はないのでは? 公開し、そこにユーザがなにか書き込むと、PHPコード内の「INSERT TABLE」文により、あらかじめフィールドも定義されたテーブルのDBレコードをひとつずつ増やしてゆく仕組みであるのが、普通のDB運用形態です。

anbsd
質問者

お礼

ありがとうございます。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

PDOもSQLite を使ったことがないので、アバウトなアドバイスですが、 一回、そのテーブルに対してselectを投げてやって、エラーコードで判断する。って感じですかね。。

anbsd
質問者

お礼

ありがとうございます。

関連するQ&A