レシピ
データベース MySQL / MariaDB
mysqliでMySQL/MariaDBにテーブルを作成:CREATE TABLE
今回はmysqliを使ってMySQL/MariaDBのデータベースに接続し、新しくテーブルを作成する方法について解説します。
この記事のポイント
- MySQL/MariaDBのデータベースに新しくテーブルを作成する
- 具体的なコード例でテーブルを作る流れが理解できる
- mysqliオブジェクトを使う方法、関数を使う方法の2通りを解説
目次
MySQL/MariaDBのデータベースに新しくテーブルを作成する
今回はMySQLiを使ってMySQL/MariaDBのデータベースに接続し、次のようなテーブルを新しく作成します。
カラム名 | 型 | その他 |
---|---|---|
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関数同様にデータベースハンドラを渡します。
以上が関数を使ってテーブルを新しく作成する方法です。
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。