最終更新日:
公開日:
レシピ
データベース MySQL / MariaDB
mysqliでMySQL/MariaDBのテーブルを削除:DROP TABLE
MySQLiクラスのオブジェクトや関数を使って、MySQL / MariaDBのデータベースに新しくテーブルを作成する方法について解説します。
この記事のポイント
- MySQL/MariaDBのデータベースにあるテーブルを削除する
- オブジェクト、または関数(手続き型)を使う2通りの方法を解説
目次
MySQL/MariaDBのデータベースにあるテーブルを削除する
MySQLiクラスのオブジェクトや関数を使って、MySQL/MariaDBのデータベースに存在するテーブルを削除していきます。
今回は次のようなuserテーブルを使って進めていきます。
id | name | gender | age | modify_datetime | create_datetime |
---|---|---|---|---|---|
1 | 青山 太郎 | 1 | 35 | 2016-10-04 00:00:00 | 2014-04-10 00:00:00 |
2 | 飯島 彩子 | 2 | 26 | 2016-10-02 00:00:00 | 2014-04-10 00:00:00 |
3 | 宇多 太郎 | 1 | 27 | 2016-10-01 00:00:00 | 2014-04-10 00:00:00 |
4 | 江藤 彩子 | 2 | 32 | 2016-09-20 00:00:00 | 2015-08-07 00:00:00 |
5 | 大島 太郎 | 1 | 22 | 2016-09-03 00:00:00 | 2012-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系の関数(手続き型)を使ってテーブルを削除する方法です。