レシピ

データベース MySQL / MariaDB

mysqliを使ってMySQL/MariaDBのデータベースへ接続

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

MySQLiの紹介とMySQLとの違い、データベースへの接続方法までを解説します。

この記事のポイント

  • mysqliについて知る
  • mysqliを使ってMySQL/MariaDBのデータベースに接続する

目次

MySQLiってなに?

MySQLiとは「MySQL improved extension」の略で、PHPからMySQL/MariaDBデータベースを操作するためのインターフェースを提供する、PHPの拡張機能です。
以前は「mysql_query」などのMySQL(iがつかない)が使われていましたが、PHP5.5以降では非推奨となりました。
その代替えとなったのがMySQLiです。

MySQLとの違いは、オブジェクト指向の記述に対応したことです。
なのでMySQLiを使うにはまずオブジェクト(インスタンス)を生成し、メソッドを使ってSQLの実行をする形になります。

MySQLiオブジェクトのインスタンスを生成するコード例

// インスタンスを生成
$mysqli = new mysqli( 'host_name', 'user_name', 'password', 'database_name');

// SQLクエリの実行
$mysqli->query("SELECT * FROM test_table");

MySQLからMySQLiへの移行方法は?

基本的にMySQLで使っていたSQLは、そのままMySQLiでも使用できます。
また、従来の手続き型の関数も用意されており、関数名も「mysql」に「i」をつけた記述の変更で対応できるようになっています。

例えば、クエリを実行する「mysql_query」には「mysqli_query」、データベースへの接続に使うmysql_connectにはmysqli_connect、接続を閉じる「mysql_close」には「mysqli_close」というように、それぞれ対応した関数が用意されています。
そのため、コードをオブジェクト指向に対応する形へ書き直さなくても、従来の関数名に「i」を追加する形で簡単に移行することも可能です。

1つだけ注意しなければならないのは、MySQLとMySQLiでは受け取るパラメータの順番が異なることです。

MySQLのコード

// DBサーバーへ接続
$db_link = mysql_connect( 'host_name', 'user_name', 'password');

// DBへ接続
mysql_select_db( 'database_name', $db_link);

// クエリの実行
$data = mysql_query( 'SELECT * FROM test_table', $db_link);

// DBとの接続解除
mysql_close($db_link);

MySQLiのコード

// DBサーバーへ接続
$db_link = mysqli_connect( 'host_name', 'user_name', 'password');

// DBへ接続 (パラメータの順番が違う)
mysqli_select_db( $db_link, 'database_name');

// クエリの実行 (パラメータの順番が違う)
$data = mysqli_query( $db_link, 'SELECT * FROM test_table');

// DBとの接続解除
mysqli_close($db_link);

mysql_select_dbmysqli_select_dbのパラメータ、及びmysql_querymysqli_queryのパラメータは順が逆になっています。
このような違いがあるので注意してください。

データベースへ接続

それでは早速MySQLiを使ってデータベースへ接続してみましょう。
仮に、次のようなデータベースがあったとします。

データベース「gc_database」

MySQLiは「オブジェクトを使った書き方」と「関数を使った書き方」の2通りあるため、それぞれ解説していきます。
MySQL、MariaDBのどちらも同じ方法で接続できるため、データベースの違いを意識する必要はありません。

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

まずはオブジェクト型の接続方法をみていきます。
手続き型で接続を行いたい場合は、ここをスキップして「手続き型」へ進んでください。

コード

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

// 接続エラーの確認
if( $mysqli->connect_errno ) {
	echo $mysqli->connect_errno . ' : ' . $mysqli->connect_error;
}

// 接続解除
$mysqli->close();

解説

最初にmysqliクラスのインスタンスを生成して接続を行います。
ここで4つのパラメータを「ホスト」「ユーザー名」「パスワード」「データベース名」の順に指定します。

続くif文で、connect_errnoプロパティにエラー番号が入っているかで接続エラーが起こっているか判定を行います。
エラー番号が入っていなければif文をスキップし、入っていたらエラー内容を出力します。

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

関数を使った書き方

手続き型の関数でデータベースに接続する場合は、次のようなコードになります。
全体の流れはオブジェクト型と同じです。

コード

// データベースへ接続
$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_close($db_link);

解説

まずはmysqli_connect関数で4つのパラメータ、「ホスト」「ユーザー名」「パスワード」「データベース名」を指定して接続を行います。

もし接続エラーがあった場合、mysqli_connect_errno関数がエラー番号を返してくれるので、if文の中でエラー番号と内容を出力します。
正常に接続できた場合は返り値が整数「0」のため、if文はスキップされます。

最後にmysqli_close関数で接続を解除して終了です。

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

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

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

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