(ちなみに使用するDBはSQLiteです)
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"と言われて使えないようでした。