PHPでDB接続
PDO (PHP Data Object) を使用しPHPによるDB接続する方法を解説します。
DBはPostgreSQLを使用します。
大まかな流れとしては、
1. DB接続
2. SQLクエリの実行
3. データ (クエリ) の取得
です。
DB接続の前に、php.iniファイルを編集してPDOを使用できるようにしないといけません。
※C:\xampp\php\php.ini の 910~950行目あたりにある
;extension=pdo_mysql
;extension=pdo_pgsql
;extension=pdo_sqlite
使用したいDBに対応している、行頭の 「;」 を削除します。その後、Apacheを再起動します。
1. DB接続
では、php.iniファイルの設定ができたらPHPからDB接続していきます。
まず、PDOクラスに接続したいDBの情報(DB名、ホスト名、ポート番号、ユーザー名、パスワード)を引数で渡します。その返り値を取得するインスタンス$dbhを生成します。
PostgreSQLの場合
$dsn = 'pgsql:dbname=データベース名 host=ホスト名 port=ポート番号';
$user = 'ユーザー名';
$password = 'パスワード';
$dbh = new PDO($dsn, $user, $password);
※ $dsn は (Data Source Name) でDBに接続する情報が代入
※ $dbh は (Database Handle) の略でPDOオブジェクトを管理
2.SQLクエリの実行
変数sqlには実行したいクエリを作成。引数をクエリに代入できます。
変数stmtには実行するSQLを、prepareメソッドにて実行するためのPDOステートメントを定義します。
$sql = 取得したいSQL文
$stmt = $dbh->prepare($sql);
3.データ (クエリ) の取得
変数resultには、$stmtに対しての結果を取得します。
結果が1行ならfetchメソッド、結果が複数ならfetchAllメソッドを利用します。
(PDO::FETCH_ASSOC)は、結果セットから次の行を取得するPDOステートメントです。
$result = $stmt->fetch(PDO::FETCH_ASSOC);
SELECT文の場合は、複数行がほとんどで、fetchAllを利用して結果をforeachで配列を取得するのが一般的です。
参考
著者: E.R (株式会社ウィズツーワン)