PHPからMySQL上のデータを取得するために

このページでは、PHPからMySQLに接続するための概要について説明します。

基本的なWebアプリケーションの仕組み

まずは、以下のページを参考に、Web3層アプリケーションについて理解を確認してください。

Web3層アプリケーションの仕組み

『Webサーバとサーバサイドプログラムとデータベースは3層の仕組みでコンテンツを返している』
ということが分かって頂けたでしょうか?
今回は、サーバサイドプログラムであるPHPと、データベースであるMySQLの間での通信を行うことになります。
この実習の方法ですと、Apache+PHP+MySQL(MariaDB)という構成になっているはずです。

MySQLデーモンとMySQLクライアント

さらにMySQL(MariaDB)のことを掘り下げます。
まず、PHPとMySQLが通信をする際には、以下のような要素が関係します。
特に、MySQLサービスそのものや、MySQLサービスが稼動しているサーバを指して、『MySQLサーバ』と呼びます。
(○○サーバというのは、サービス単体を指すこともあれば、インフラ上の特定のサーバマシンを指すこともあります。紛らわしいですね。前者についてはできるだけ、MySQLデーモンとか、mysqldなどと呼ぶようにしましょう)

MySQLサービス

MySQLの核にあるプログラム(サービスまたはデーモン)です。
MySQLサービスはMySQLクライアントから受け取ったコマンド(SQL)を介して、データの出し入れを行います。
また、OSから直接コマンドを実行して、データのメンテナンスを行ったりします。(バックアップやチューニングなど)

MySQLクライアント

各種アプリケーションとMySQLサービスを仲介する中間プログラムです。
プログラミング言語からデータベースにアクセスする際は、裏側でMySQLクライアントがコールされます。

PHP側のMySQLクライアント利用モジュール

PHPの機能に実装された、MySQLクライアントをコールするための機能(API)です。
クラスライブラリや関数などを利用して、アプリケーションはMySQLにアクセスすることができるようになります。
(mysql、mysqli、PDOなどが該当します)

MySQLに接続するにはどの方法(API)がいい?

PHPからMySQLに接続するための方法には、複数ありあります。
それぞれのメリット/デメリットについて紹介します。
結論から書きますと、『性能重視ならmysqli』『汎用性重視ならPDO』となります。
今回は汎用的で機能も豊富なPDOを利用します。

PDO

PDOを使うとMySQLだけでなく、別種のデータベースにも同じ構文が使えるようになります。
(様々なデータベースへの接続を抽象化する、多機能なAPIです)

mysqli

機能は限られていますが、MySQLの性能を最大限発揮できるAPIです。
以前PDOと性能を比較したことがあったのですが、格段にmysqliの方が早かったです。
大規模なシステムなることが分かっていたら、mysqliを使いましょう。

mysql

mysqliなどが登場する前は、mysql_xxx()などといった関数を使ってプログラミングしていました。
mysql関数は速度も遅く機能が少ないので、使う必要はありません。

上記について詳しく知りたい方は、以下の公式マニュアルをご覧ください。

PHP: どの API を使うか – Manual

このページをシェア Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn