このページでは、PHPからMySQLに接続するための概要について説明します。
基本的なWebアプリケーションの仕組み
まずは、以下のページを参考に、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関数は速度も遅く機能が少ないので、使う必要はありません。
上記について詳しく知りたい方は、以下の公式マニュアルをご覧ください。