PHPプログラミング

最終更新日:
公開日:

レシピ

データベース MySQL / MariaDB

mysqliでMySQL/MariaDBのテーブルを削除:DROP TABLE

MySQLiクラスのオブジェクトや関数を使って、MySQL / MariaDBのデータベースに新しくテーブルを作成する方法について解説します。

この記事のポイント

  • MySQL/MariaDBのデータベースにあるテーブルを削除する
  • オブジェクト、または関数(手続き型)を使う2通りの方法を解説

目次

MySQL/MariaDBのデータベースにあるテーブルを削除する

MySQLiクラスのオブジェクトや関数を使って、MySQL/MariaDBのデータベースに存在するテーブルを削除していきます。
今回は次のようなuserテーブルを使って進めていきます。

テーブル名:user
idnamegenderagemodify_datetimecreate_datetime
1青山 太郎1352016-10-04 00:00:002014-04-10 00:00:00
2飯島 彩子2262016-10-02 00:00:002014-04-10 00:00:00
3宇多 太郎1272016-10-01 00:00:002014-04-10 00:00:00
4江藤 彩子2322016-09-20 00:00:002015-08-07 00:00:00
5大島 太郎1222016-09-03 00:00:002012-10-05 00:00:00

まず、SQLでテーブルを削除するDROP TABLEの基本的な形を確認しましょう。

SQLのDROP TABLE

DROP TABLE テーブル名;

DROP TABLEに続いて、削除したいテーブルを指定します。
例えば、今回のuserテーブルであれば次のようなSQLになります。

SQLのDROP TABLE

DROP TABLE user;

このSQLを元に、MySQLiクラスのオブジェクトと関数(手続き型)の2つのパターンを使った方法を見ていきます。
いずれも、MySQL/MariaDB共通で使用できます。

なお、データベースの接続について詳しくは「mysqliを使ってMySQL/MariaDBのデータベースへ接続」をご覧ください。

オブジェクトを使った書き方

まずはMySQLiクラスのオブジェクトを使った書き方を解説していきます。

index.php

// (1)データベースと接続
$mysqli = new mysqli( 'host', 'user_name', 'password', 'database_name');

if( $mysqli->connect_errno ) {
	echo $mysqli->connect_errno . ' : ' . $mysqli->connect_error;
}

// (2)プリペアドステートメントの用意
$stmt = $mysqli->prepare('DROP TABLE user');

// (3)実行
$stmt->execute();

// (4)データベースとの接続解除
$mysqli->close();

(1)はデータベースに接続するコードです。
MySQLiクラスのオブジェクトを作成するときにデータベースへの接続情報を渡して作成します。
もし接続に失敗した場合はif文に入り、エラー内容を出力します。

データベースと接続

// データベースと接続
$mysqli = new mysqli( 'host', 'user_name', 'password', 'database_name');

if( $mysqli->connect_errno ) {
	echo $mysqli->connect_errno . ' : ' . $mysqli->connect_error;
}

続いて、(2)ではprepareメソッドを使ってプリペアドステートメントを実行してテーブルを削除する準備を行います。
ここでテーブルを削除するSQL「DROP TABLE」を記述します。

プリペアドステートメントの用意

// (2)プリペアドステートメントの用意
$stmt = $mysqli->prepare('DROP TABLE user');

Note

プリペアドステートメントのプレースホルダー「?」はテーブル名では使用することができません。

(3)でexecuteメソッドを実行してテーブルを削除します。
この時点でデータベースから該当するテーブルが削除されます。

最後に、(4)でcloseメソッドを使ってデータベースとの接続を解除して終了します。

データベースとの接続解除

// (4)データベースとの接続解除
$mysqli->close();

以上がMySQLiクラスのオブジェクトを使ったテーブル削除の方法です。

mysqli系の関数(手続き型)を使った書き方

続いて、mysqli系の関数(手続き型)を使ってテーブルを作成する方法です。
全体の流れは上記のオブジェクトを使う方法と同じです。

index.php

// (1)データベースと接続
$db_link = mysqli_connect( 'host', 'user_name', 'password', 'database_name');

if( mysqli_connect_errno() ) {
	echo mysqli_connect_errno() . ' : ' . mysqli_connect_error();
}

// (2)プリペアドステートメントの用意
$stmt = mysqli_prepare( $db_link, 'DROP TABLE user');

// (3)実行
mysqli_stmt_execute($stmt);

// (4)データベースとの接続解除
mysqli_close($db_link);

最初の(1)はmysqli_connect関数を使ってデータベースに接続します。
mysqli_connect関数は無事に接続するとデータベースの接続情報をオブジェクトとして返すため、それを変数$db_linkで受け取ります。
このオブジェクトは以降のmysqli系関数を実行するときに渡して、接続しているデータベースを特定するために使用します。

データベースと接続

// (1)データベースと接続
$db_link = mysqli_connect( 'host', 'user_name', 'password', 'database_name');

if( mysqli_connect_errno() ) {
	echo mysqli_connect_errno() . ' : ' . mysqli_connect_error();
}

続いて、mysqli_prepare関数にテーブルを削除するSQLを渡してプリペアドステートメントを実行する準備をします。
ここではプリペアドステートメントのオブジェクトが返されるため、今度は変数$stmtに入れます。

プリペアドステートメントの用意

// (2)プリペアドステートメントの用意
$stmt = mysqli_prepare( $db_link, 'DROP TABLE user');

(3)で、先ほど用意したプリペアドステートメントを実行します。
この時点で、データベースからテーブルが削除されます。

プリペアドステートメントを実行

// (3)実行
mysqli_stmt_execute($stmt);

最後にデータベースとの接続を解除して終了します。
mysqli_close関数でも解除するデータベースを特定するために、$db_linkに入っているオブジェクトを渡して実行します。

データベースとの接続解除

// (4)データベースとの接続解除
mysqli_close($db_link);

以上がmysqli系の関数(手続き型)を使ってテーブルを削除する方法です。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。