テーブルが存在するか確認する方法
# table_nameというテーブルが存在するかどうか
$sql = qq{ show tables like 'table_name'; };
$sth = $db->prepare ($sql);
$tbl = $sth->execute ();
$sth->finish;
$db->commit ();
if ($tbl != '0E0'){
# テーブルが存在する場合の処理
}
テーブルが存在するかどうかをshow tableで取得
select文でないステートメントを実行した場合、executeは影響を受けたレコード数を返します。また、レコード数が0の場合は0E0、レコード数が不明の場合は-1を返します。 DBI/DBDについて
らしいので返り値が'0E0'の時、テーブルは存在しないという判定にしてやればOK
補足
MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.1.3 GRANT 構文
別所で指摘してもらったんですがSHOW TABLESは権限の問題があるみたいです
select *
from information_schema.TABLES
where TABLE_NAME = 'table'
and TABLE_SCHEMA = 'database';