Home > PHP, PostgreSQL > PHP Connection to PostgreSQL

PHP Connection to PostgreSQL

Berikut ini langkah langkah yang perlu diperhatikan ketika membuat aplikasi PHP yang connect ke database PostgreSQL.

Function pg_connect

Langkah pertama adalah memanggil function pg_connect() untuk melakukan koneksi ke database server.

$dbconn = pg_connect ($conn_string);

Parameter function ini adalah connection string yang berisi definisi host, user, password, nama database yang ada di server PostgreSQL. Jika salah satu definisi tidak digunakan maka artinya nilai default pada server tersebut yang digunakan.

Beberapa contohnya adalah sbb:

Konek ke database yang namanya "tokobaju"

$dbconn = pg_connect ("dbname=tokobaju");


Konek ke database yang namanya "tokobaju" pada server postgresql yang ada di "localhost" dan port "5432"

$dbconn2 = pg_connect ("host=localhost port=5432 dbname=tokobaju");


Konek ke database yang namanya "tokobaju" pada komputer dengan hostname "sheep" dengan menggunakan username dan password:

$dbconn3 = pg_connect ("host=sheep port=5432 dbname=tokobaju user=lamb password=foo");


Konek ke database yang namanya "test" pada komputer dengan hostname "sheep" dengan username dan password dengan terlebih dahulu mendefinisikannya pada variabel string:

$conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
$dbconn4 = pg_connect ($conn_string);

Catatan

PHP melakukan koneksi ke server postgres melalui TCP/IP jadi server PostgreSQL nya harus diset supaya bisa menerima koneksi via TCP/IP. Ini dilakukan dengan setting pada file postgresql.conf. Pastikan bahwa baris port sudah di uncomment:

port = 5432


JIka koneksi juga dilakukan selain dari localhost, pastikan bahwa baris listen_address juga sudah diuncomment dan memuat daftar IP address yang diperbolehkan untuk melakukan koneksi, misalnya:

listen_addresses = 'localhost'  , '192.168.0.233'


User, password , dan metoda autentikasi juga harus disetting supaya PHP berhasil konek ke PostgreSQL, ini dilakukan dengan setting file pg_hba.conf. Misalnya pada baris sbb:

#TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         127.0.0.1/32          md5

yang artinya, host (komputer) dengan IP address 127.0.0.1 dapat konek ke semua database yang ada pada server dengan menggunakan semua user yang ada, dengan menggunakan metoda autentikasi MD5.

Function pg_query

Selanjutnya gunakan function pg_query ( resource connection, string query) untuk melakukan query ke database.

Misalnya

$sql="select * from produk";
$res = pg_query($dbconn, $sql);

Function ini memerlukan 2 parameter yaitu connection result yang dihasilkan dari function pg_connect, dan definisi SQL query. Contoh diatas melakukan query select ke tabel produk pada database yang telah dikonek melalui connection result $dbconn. Hasilnya berupa query result yang ditampung pada variabel $res.

Function pg_fetch_array

Setelah query berhasil dilakukan, maka selanjutnya diambil menggunakan function pg_fetch_array.

array pg_fetch_array ( resource result [, int row [, int result_type]])

Parameter function ini adalah result query yang dihasilkan dari pg_query, dan parameter optional dimulai dari baris keberapa (defaultnya 0), dan parameter optional yang mengontrol return value function ini apakah berupa array associative (PGSQL_ASSOC) atau array field index (PGSQL_NUM) atau keduanya (PGSQL_BOTH). Defaultnya adalah PGSQL_BOTH.

Setiap kali dipanggil function ini mengeluarkan satu baris hasil query, sampai dengan baris tersebut habis. Jika sudah habis maka return value nya adalah FALSE.

Sebagai contoh:

$row = 0; // postgres needs a row counter other dbs might not
while ($data = pg_fetch_array($res, $row))
{
    echo $data['merk'];
    echo $data['harga']."<BR>";
    $row++;
}

Contoh diatas melakukan looping sambil memanggil function pg_fetch_array selama hasilnya ada (masih ada record) dan menampung hasilnya pada array $data.  Jika masih ada, maka echo kan $data['merk'] dan $data['harga'] dimana merk dan harga adalah nama field yang ada pada tabel produk. Cara pemanggilan field disini menggunakan associative array. Bisa juga dilakukan dengan index field yaitu $data[0] dan $data[1].

Contoh Program Lengkap

Ini dia contoh programnya yang lengkap, diambil dari help PHP.

<?php
   $conn = pg_pconnect ("dbname=tokobaju");
   if (!$conn) {
     echo "An error occured.\n";
     exit;
   }

   $result = pg_query ($conn, "SELECT * FROM authors");
   if (!$result) {
     echo "An error occured.\n";
     exit;
   }

   $row = 0; // postgres needs a row counter other dbs might not
   while ($data = pg_fetch_array($res, $row))
   {
      echo $data['merk'];
      echo $data['harga']."<BR>"; $row++; }
?>

  • Share/Bookmark
  1. No comments yet.
  1. No trackbacks yet.
This site uses a Hackadelic PlugIn, Hackadelic SEO Table Of Contents 1.6.0.