第8章 データベース
教科書「プログラミングPHP 第2版」
上級試験は、オライリーから出版されているプログラミングPHP 第2版を教科書に出題されます。
データベース入門
- PHPは、MYSQL, PostgreSQL, Oracle等の様々なデータベースをサポートしている。
- データベース特有のエクステンションを使うか、PEARライブラリ等のデータベースに依存しないものを使うか
データベース特有のものを使うと、移行する時に大変
データベースに依存しないものを使うと、データベース特有の機能は利用できない。また動作速度がやや遅い。 - PHPを適切なデータベースドライバを使える設定にする。--with-mysql, --with-oci8, --with-ibm-db2, --with-pgsql等。
- PHP5では、SQLiteが標準で利用可能。小規模なプログラムならSQLiteが手軽
リレーショナルデータベース
- リレーショナルデータベース(RDBMS)はデータを構造化している。
- PHPはSQLを使用してデータベースに接続する。
- SQLは、Data Manipulation Language(DML)とData Definition Language(DDL)。
- booksテーブルにデータを挿入するSQLステートメントの例 INSERT INTO books VALUES(4, 'I, Robot', '0-553-29438-5', 1950)
PEAR DB ライブラリ
- DB::connect(DSN)で接続。DB::iserrorでエラーチェック。$db->queryでクエリ実行。$q->fetchIntoでクエリ結果を取得
- data source name(DSN)、データベースのタイプや場所、ユーザー名とパスワード等を指定する
- データベースのタイプ、Mysql, mysqli, Pgsql, Ibase, Msql, Mssql, oci8, Odbc, Sybase, Ifx, Fbsql, Dbase, Sqlite
- 接続オプション、persistent, optimize, debug
- DB::iserrorでエラーチェックし、エラー時はgetMessage()でメッセージ表示
- $db->queryでクエリ実行。INSERT, UPDATE, DELETE 等は成功時にDB_OKを返す。SELECTは成功時にデータを返す。
- fetchRowは配列で返す(データが無ければNULL)。
- fetchIntoは引数で指定した配列に出力する(データが無ければNULL)。
- デフォルトは添字配列。DB_FETCHMODE_ASSOCにすると、DBのカラム名を配列のキーに使用する。DB_FETCHMODE_OBJECTにすると、オブジェクトで返す。
- freeでメモリ解放。disconnectで切断。
※原書を元にしています。日本語訳本とは用語等が異なる可能性があります。
Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.