PHPには、PDO(PHPデータオブジェクト)という強力なオブジェクトが用意されており、殆どのデータベースを、このオブジェクトだけで操作することができます。 ここでは、このPDOを使って、データベースを操作する方法と、SQLの基本的な使い方を学習します。
- ツールのインストール
今回は、データベースサーバが無くても気軽にSQLを体験できるSQLiteを使って、学習しますので、windows上からでも簡単にSQLを実行可能なツールもインストールしておきます。
DB Browser for SQLite こちらをダウンロードして、インストールしてください。
SQLiteには、コマンドラインツールも存在しますが、こちらのほうが、直感的で簡単に使用できます。
インストールが完了したら、DB Browserを起動し、「新しいデータベース」ボタンを押して、test.dbを作成してみましょう。
テーブルは、SQL文で作成しますので、テーブルの定義ウィンドウは、とりあえず閉じてください。
[SQL実行]タブを押して、テーブル作成のSQL文を入力して、実行ボタンを押すと、ターブルが作成されます。 テーブルの作成には、CREATE TABLE文を使用します。IF NOT EXISTSは、すでに、このテーブルが存在すれば実行しないようにしています。 この例では、メンバーを識別するための重複しないID、このメンバーの有効、無効を設定するauth、氏名、フリガナ、電話番号、メールアドレス、パスワード、許可情報、備考を保存できるフィールドを作成しています。 重複しない識別子のIDをプライマリーキーに設定して、このキーでレコードを高速に操作できます。SQLiteには、各テーブルに隠されたキーが存在しますが、できるだけ明示的なプライマリーキーを作成してください。
これと同じことをPHPで記述すると、以下のようになります。if ($dbh = new PDO("sqlite:test.db")) { /* SQLiteのオープンに成功すれば、以下を実行 */ $dbh->query("BEGIN TRANSACTION;"); $stmt = $dbh->query(" CREATE TABLE IF NOT EXISTS member( ID VARCHAR(12) NOT NULL PRIMARY KEY, auth VARCHAR(10) NOT NULL, name VARCHAR(20) NOT NULL, kana VARCHAR(20) NOT NULL, tel VARCHAR(20) NOT NULL, email VARCHAR(40) NOT NULL, upw VARCHAR(20) NOT NULL, auths TEXT NOT NULL, memo TEXT NOT NULL );" ); $dbh->query("COMMIT;"); }
1行目で、SQLiteをオープンしています。この時、指定したファイルが存在しない場合は、自動的に作成されます。 3行目で、トランザクションを開始、4行目で、テーブルを作成し、17行目で、トランザクションをコミットして、終了です。 トランザクションは、複数のSQL文を、一塊として実行する機能のほかに、SQLを確実に実行して、失敗すると、すべてを取り消しますので、矛盾が発生しずらくなりますので、重要な処理や、 時間を要する処理では、必ず使用するようにしてください。