PHPとPostgreSQL間でのデータのCRUD処理について学んだため、備忘録に残します。
PHPは元々「PostgreSQL関数」が用意されているため、こちらを利用することになります。
PHPからPostgreSQLデータベースへの接続方法:2つ
- PHPのlibpqライブラリから提供されるPostgreSQL関数を使用する方法
- PDO(PHP Data Objects)を使用する方法
どちらの方法を使うかの判断は機能的な比較というよりも、サーバー環境やプログラマの裁量によります。
分かりやすい例としては、PDOを使って他のデータベース(MySQLやSQLiteなど)を操作するコードを記述した経験のある場合は、PostgreSQLもPDOで扱う方がスムーズかもしれません。
一方で、他のプログラミング言語(PythonやRubyなど)で関数を使っての操作コードを書いた経験がある場合は、libpqライブラリの関数を使う形で書いた方が分かりやすいはずです。
接続方法については下記記事を参考にさせていただきました。
今回は「PDOを使用する方法」で接続してみたいと思います。
接続手順
1. PostgreSQL インストール 〜 DB作成
こちらの記事がとても分かりやすかったので、記事の通りに進めます。
【PostgreSQL】MacでPostgreSQLデータベースの環境をつくろう!
記事の通りに進めて、最終的にテーブルにデータを追加するところまで終わらせておきます。
私の場合は、以下のようなテーブルを作ってみました。
テーブル名:users
カラム: id, firstname, lastname
データ: 以下の通り
id | firstname | lastname |
---|---|---|
1 | Kaori | Saito |
2 | Naomi | Tanaka |
3 | Kei | Yamada |
2. PHPで接続用ファイルを用意する
<?php
function convert_enc($str){
$from_enc = 'EUC_JP';
$to_enc = 'SJIS';
return mb_convert_encoding($str, $to_enc, $from_enc);
}
$dsn = 'pgsql:dbname=DB名 host=localhost port=5432';
$user = 'ユーザー名';
$password = 'パスワード';
try{
$dbh = new PDO($dsn, $user, $password);
print('接続に成功しました。<br>');
$sql = 'select * from users';
foreach ($dbh->query($sql) as $row) {
print(convert_enc($row['id']).'<br>');
print(convert_enc($row['firstname']).'<br>');
print(convert_enc($row['lastname']).'<br>');
}
}catch (PDOException $e){
print('Error:'.$e->getMessage());
die();
}
$dbh = null;
?>
3. ビルトインサーバを立ち上げ、DBと接続されているかをブラウザで確認
php -S localhost:8000
localhost:8000/sql.phpを開くと・・・
接続に成功しました!