MENU

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 でテーブルの存在確認ができます。