PHPでMySQL上に特定のテーブルが存在するかどうか判定する
最近データベースを触っていなくて、mysql_connect() が非推奨になっていることすら知りませんでした。mysqliかPDOを使うようですね。今回は、あまり使う機会はありませんが、テーブルの存在を判定する方法を紹介します。
SHOW TABLES
// 接続
$mysqli = new mysqli('ホスト名', 'ユーザー名', 'パスワード', 'データベース名');
// 接続状況チェック
if ($mysqli->connect_error)
{
echo $mysqli->connect_error;
exit;
}
$mysqli->set_charset('utf8');
// クエリ実行
if ($result = $mysqli->query("SHOW TABLES LIKE 'テーブル名'"))
{
if ($result->num_rows)
{
echo 'テーブルが存在';
}
// 結果セットの開放
$result->close();
}
// 切断
$mysqli->close();
SHOW TABLES LIKE 文で存在を判定できます。
IF NOT EXISTS
// 接続
$mysqli = new mysqli('ホスト名', 'ユーザー名', 'パスワード', 'データベース名');
// 接続状況チェック
if ($mysqli->connect_error)
{
echo $mysqli->connect_error;
exit;
}
$mysqli->set_charset('utf8');
// 同名のテーブルが存在しなければ作成
$mysqli->query("CREATE TABLE IF NOT EXISTS テーブル名(id int(6), body text)");
// 切断
$mysqli->close();
CREATE TABLE クエリ実行時に、IF NOT EXISTS でテーブルの存在確認ができます。