PHP レッスン — レッスン 3 — MySQL DB の操作。
3 つ目のレッスンをいきなり MySQL DB の操作から始めるのは早すぎると思うかもしれません。しかし、そうではないと信じてください。PHP を Web プログラミングの言語として学びながら DB の操作を学ばないのは、インターネットのないコンピューターを持つのと同じです。そのようなコンピューターで作業はできますが、情報をどこからも得られません。ですから、歯を食いしばって、たとえ SQL 言語について何も知らなくても、DB への SQL クエリを書き始めましょう。
SQL(Structured Query Language —「構造化問い合わせ言語」) — 表形式のデータベースでデータの作成・変更・管理に用いられる汎用のコンピューター言語です。SQL はテーブル内のレコードの計算に基づいています。
PHP は多くのデータベースを扱えます。MySQL、PostgreSQL、Oracle その他多数です。私たちは php と mysql の操作を学びます。この組み合わせはサイト作成で非常に人気だからです。しかも、MySQL の操作を学べば、将来ほかの DB も扱えるようになります。SQL は汎用の言語で、その構文はほとんどすべての表形式 DB で同じだからです。
MySQL — 自由なデータベース管理システム(DBMS)です。MySQL は Oracle Corporation 社の所有物で、同社は買収した Sun Microsystems とともにこれを取得し、アプリケーションの開発とサポートを行っています。GNU General Public License、または独自の商用ライセンスの下で配布されています。
SQL 自体については多くのレッスンがあります。ひとまず、DB をどう接続するかという簡単なことから始めましょう。そのために、simpleCMS クラスにもう 1 つメソッドを作ります:
public function connectDB() {
}
これにより、私たちのクラスのオブジェクトがすでにあるコードのどこからでも、DB との接続を呼び出せます。これはとても便利です。
また、MySQL サーバー、DB のユーザー、DB 名の変数も必要になります:
class simpleCMS {
public $host = 'localhost';
public $username = 'root';
public $password = '';
これらの変数の定義を忘れた場合に備えて、デフォルトで定義しておきます。私は Denwer を使っているのでこのような MySQL の設定です。Denwer ではなく、ホスティングや自分のサイト用の専用サーバーを使っている場合は、自分の MySQL ユーザーを使ってください。
では、MySQL との接続を作るために mysql_connect() 関数を使いましょう。
public function connectDB() {
$link = mysql_connect($this->host, $this->username, $this->password);
if (!$link) {
die('接続エラー: ' . mysql_error());
}
return $link;
}
では、mysql_connect() 関数がどう動作するか見てみましょう。まず、関数には 3 つのパラメーター、すなわち DB サーバー名、DB のユーザー、DB ユーザーのパスワードを渡す必要があります。次に die 関数が来ます。これは、接続が確立されなかった場合にエラーの出力が働くという意味です。変数 $this->host、$this->username、$this->password はクラスのプロパティへの参照です。私たちの場合デフォルトで設定されているので、すぐに渡され、connectDB() メソッドで定義しなくてもかまいません。
mysql_connect 関数は、ファイルの resource やフォルダの resource と同じ resource 型の接続変数 $link を返します。ですから、メモリを解放するために、作業終了後にこの接続を閉じる必要があります。接続成功のメッセージ出力は削除できます。
では、クラスファイルを接続した直後、index.php ファイルの一番最初でメソッドを呼び出しましょう:
$obj = new simpleCMS(); // 管理クラスのオブジェクトを作る $db_connection = $obj->connectDB();
DB を接続する必要があるところではどこでも、私たちのクラスのファイルを接続し、オブジェクトを作り、次に DB への接続メソッドを呼び出します。ご覧のとおり、DB の操作に難しいことはありません。
接続を作ったのと同じように、作業終了後にはそれを閉じる必要があります。接続は mysql_close() 関数で閉じます。接続を閉じるためのメソッドをもう 1 つ作ることはしません(必要が生じたときには作る価値がありますが)。ですので、単にコードを追加します:
include_once('class/simpleCMS.php'); // クラスのファイルを接続する
$obj = new simpleCMS(); // 管理クラスのオブジェクトを作る
$db_connection = $obj->connectDB(); // 接続の作成
// 何らかの DB の操作
mysql_close($db_connection); // 接続を閉じる
分かりやすく説明できたと思います。次のレッスンでは、MySQL DB へのクエリを書いていきます。何か分からないことが残っていれば、コメントで教えてください。