0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【PostgreSQL】【PHP】接続方法

Last updated at Posted at 2022-06-27

PHPとPostgreSQL間でのデータのCRUD処理について学んだため、備忘録に残します。

PHPは元々「PostgreSQL関数」が用意されているため、こちらを利用することになります。

PHPからPostgreSQLデータベースへの接続方法:2つ

  1. PHPのlibpqライブラリから提供されるPostgreSQL関数を使用する方法
  2. 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

スクリーンショット 2022-06-27 12.59.10.png

2. PHPで接続用ファイルを用意する

sql.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を開くと・・・

スクリーンショット 2022-06-27 15.16.50.png

接続に成功しました!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?