レシピ

データベース MySQL / MariaDB

mysqliでMySQL/MariaDBにテーブルを作成:CREATE TABLE

  • このエントリーをはてなブックマークに追加

今回はmysqliを使ってMySQL/MariaDBのデータベースに接続し、新しくテーブルを作成する方法について解説します。

この記事のポイント

  • MySQL/MariaDBのデータベースに新しくテーブルを作成する
  • 具体的なコード例でテーブルを作る流れが理解できる
  • mysqliオブジェクトを使う方法、関数を使う方法の2通りを解説

目次

MySQL/MariaDBのデータベースに新しくテーブルを作成する

今回はMySQLiを使ってMySQL/MariaDBのデータベースに接続し、次のようなテーブルを新しく作成します。

テーブル名:gc_granola
カラム名 その他
id INT(11) AUTO INCREMENT、主キー
name VARCHAR(20)
price INT(11)
better_before DATETIME
modify_datetime DATETIME
create_datetime DATETIME

MySQLiクラスのインスタンスから作成するオブジェクトを使った方法と、mysqli_query関数を使う方法の2通りをご紹介します。
いずれの方法も、MySQL/MariaDB共通で使用できます。

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

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

まずはMySQLiクラスのインスタンスを使った書き方を解説していきます。

オブジェクト型でのテーブル作成例

$mysqli = new mysqli( 'host_name', 'user_name', 'password', 'database_name');

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

$mysqli->set_charset('utf8');

// テーブルを作成するSQLを作成
$sql = 'CREATE TABLE gc_granola (
	id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(20),
	price INT(11),
	better_before DATETIME,
	modify_datetime DATETIME,
	create_datetime DATETIME
) engine=innodb default charset=utf8';

// SQL実行
$res = $mysqli->query($sql);

$mysqli->close();

解説

5行目までは、データベースに接続するコードです。
もし接続に失敗した場合はif文に入り、エラー内容を出力します。

データベースに接続

$mysqli = new mysqli( 'host_name', 'user_name', 'password', 'database_name');

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

続いて、set_charsetメソッドを使って、文字コードを指定しています。
文字コードの指定は地味ですが重要なので、忘れずに指定するようにしましょう。

文字コード設定

$mysqli->set_charset('utf8');

続くコードでは変数へテーブル作成のためのSQLを記述しています。

テーブル作成のSQL

// テーブルを作成するSQLを作成
$sql = 'CREATE TABLE gc_granola (
	id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(20),
	price INT(11),
	better_before DATETIME,
	modify_datetime DATETIME,
	create_datetime DATETIME
) engine=innodb default charset=utf8';

テーブル作成については、SQLの「CREATE TABLE」を使います。
括弧「(」の中では新しいテーブルのカラム内容の記述です。

最後の「engine=〜」の部分は、テーブルが使用する「データベースエンジン」と「文字コード」の指定です。

次に、作成したテーブル作成のSQLを実行するためにqueryメソッドを呼び出します。

SQLを実行

// SQL実行
$res = $mysqli->query($sql);

実行が成功すると、次のようなテーブル「gc_granola」が作成されます。

作成されたテーブル

queryメソッドの返り値は成功したらtrue、失敗するとfalseです。

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

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

$mysqli->close();

以上が、MySQLiクラスのインスタンスを使ったテーブル作成方法の流れになります。

関数を使った書き方

続いて、mysqli_query関数を使ってテーブルを作成する方法です。
基本的な流れと実行した結果は、上記のMySQLiクラスのインスタンスを使った方法と変わりありません。

関数を使ったテーブル作成例

$db_link = mysqli_connect( 'host_name', 'user_name', 'password', 'database_name');

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

// テーブルを作成するSQLを作成
$sql = 'CREATE TABLE gc_granola (
	id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(20),
	price INT(11),
	better_before DATETIME,
	modify_datetime DATETIME,
	create_datetime DATETIME
) engine=innodb default charset=utf8';

// SQL実行
mysqli_query( $db_link, $sql);

mysqli_close($db_link);

解説

最初の5行はデータベースへの接続コードです。

データベースに接続

$db_link = mysqli_connect( 'host_name', 'user_name', 'password', 'database_name');

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

mysqli系の関数を使う方法の場合はデータベースハンドラを変数で保持する必要があります。
今回は$db_linkに入れています。

続くコードはテーブル作成のSQLです。
SQLも先述したMySQLiクラスのインスタンスを全く同じものを使います。

テーブル作成のSQL

// テーブルを作成するSQLを作成
$sql = 'CREATE TABLE gc_granola (
	id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(20),
	price INT(11),
	better_before DATETIME,
	modify_datetime DATETIME,
	create_datetime DATETIME
) engine=innodb default charset=utf8';

SQLを用意したら、mysqli_query関数で実行します。
この関数の第1引数は先ほどのデータベースハンドラ、第2引数にSQLを渡します。

SQLを実行

// SQL実行
mysqli_query( $db_link, $sql);

最後に、データベースとの接続を解除して終了です。

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

mysqli_close($db_link);

mysqli_close関数でも解除する接続を特定するために、mysqli_query関数同様にデータベースハンドラを渡します。

以上が関数を使ってテーブルを新しく作成する方法です。

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

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

ありがとうございます。
コメントを送信しました。

  • このエントリーをはてなブックマークに追加
前のページへ 一覧ページへ一覧 次のページへ