PHP PostgreSQL Kullanımı

Paylaş

PHP ile PostgreSQL veritabanını kullanmak için gerekli olan PostgreSQL kütüphanesinin kurulumu, PostgreSQL bağlantısı, veri ekleme, güncelleme, silme, sorgulama işlemleri ile ilgili bilgiler yer alıyor.

PHP PostgreSQL kurulumu

PHP ile PostgreSQL veritabanını kullanmak için öncelikle PostgreSQL arabirimin-sürücüsünün aktif hale getirilmesi gerekir.

PHP, PostgreSQL veritabanı işlemlerinde pg_ ile başlayan fonksiyonlar ve PDO olmak üzere iki yöntem sağlar.

pg_ fonksiyonları

PostgreSQL kurulumunu kontrol etmek için aşağıdaki komutlar kullanılır.

<?php

if (extension_loaded("pgsql")) {
    echo "PostgreSQL arabirimi kurulu.";
} else {
    echo "PostgreSQL arabirimi kurulu değil.";
}

?>

PostgreSQL arabirimi kurulu değilse aşağıdaki komut ile php.ini dosyasının yolunu bularak PHP sürümüne göre extension=pgsql, extension=php_pgsql ifadesinin önündeki noktalı virgülü kaldırarak etkinleştirilir.

<?php

echo php_ini_loaded_file();

?>

Arabirim fonksiyonları (pg_) kullanılarak veritabanı işlemleri yapılır.

<?php

$baglanti_cumlesi = sprintf(
    "host=%s port=%s dbname=%s user=%s password=%s",
    "localhost",
    "5432",
    "postgres",
    "postgres",
    "yusuf.sezer"
);

$baglanti = pg_connect($baglanti_cumlesi);
$sorgu = pg_query($baglanti, "select version()");
var_dump(pg_fetch_all($sorgu));
pg_close($baglanti);

?>

NOT: Esnek olması, veritabanı değişiminde kolaylık sağladığı ve OOP desteğinden dolayı PDO kullanımı faydalı olacaktır.

PDO

PostgreSQL veritabanı işlemlerinde PDO kullanımı için PHP PDO Kullanımı yazısındaki adımlar takip edilir.

Etkin PDO veritabanı sürücüleri listelenir.

<?php

print_r(PDO::getAvailableDrivers());

?>

PostgreSQL (pgsql) listede yoksa php.ini dosyası içerisinden aktif edilmesi gerekir.

Aktif etmek için extension=php_pdo_pgsql veya extension=pdo_pgsql önündeki noktalı virgülü kaldırmak yeterli olacaktır.

PDO kullanımı ile ilgili detaylı bilgi almak için PHP Dersleri bölümüne bakabilirsin.

PHP PostgreSQL bağlantısı

PDO kullanarak PostgreSQL bağlantısı aşağıdaki gibi yapılır.

<?php

$ayarlar = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_CASE => PDO::CASE_NATURAL,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];

$baglanti_cumlesi = sprintf(
    "pgsql:host=%s port=%s dbname=%s user=%s password=%s",
    "localhost",
    "5432",
    "postgres",
    "postgres",
    "yusuf.sezer"
);

try {

    $baglanti = new PDO($baglanti_cumlesi, null, null, $ayarlar);

} catch (PDOException $ex) {
    die($ex->getMessage());
}

$baglanti = null;

?>

Detaylı bilgi için PHP PDO Veritabanı Bağlantısı yazısına bakabilirsin.

PDO PostgreSQL veritabanı işlemleri PHP PDO Kullanımı yazısında yer alan metotlar kullanılarak yapılır.

PHP PostgreSQL tablo oluşturma

PostgreSQL tablo oluşturmak için SQL CREATE komutu ve PDO metotları kullanılır.

// bağlantı komutu

$tablo_sorgusu = "CREATE TABLE kisiler (
  kisi_sira INT GENERATED ALWAYS AS IDENTITY,
  kisi_adi VARCHAR(20) NOT NULL,
  kisi_soyadi VARCHAR(30) NOT NULL DEFAULT 'SEZER',
  kisi_eposta VARCHAR(50) NOT NULL,
  CONSTRAINT PK_sira PRIMARY KEY(kisi_sira)
);";

$baglanti->exec($tablo_sorgusu);

// komutlar devam ediyor

Tablo oluşturma işlemi için SQL Tablo Oluşturma yazıma bakabilirsin.

PHP PostgreSQL veri ekleme

PostgreSQL veritabanına veri eklemek için SQL INSERT komutu ve exec, query, prepare metotları kullanılır.

// komutlar

$adi = "Yusuf";
$soyadi = "SEZER";
$eposta = "[email protected]";

$baglanti = new PDO($baglanti_cumlesi, null, null, $ayarlar);

$sorgu = $baglanti->prepare(
    "INSERT INTO kisiler(kisi_adi, kisi_soyadi, kisi_eposta) VALUES(?, ?, ?)"
);

$sorgu->bindParam(1, $adi, PDO::PARAM_STR);
$sorgu->bindParam(2, $soyadi, PDO::PARAM_STR);
$sorgu->bindParam(3, $eposta, PDO::PARAM_STR);
$sorgu->execute();

// komutlar devam ediyor

Kullanıcıdan alınan bilgiler ile veri ekleme sırasında gönderilen bilgileri temizlemek (sanitize) faydalı olacaktır.

PHP PostgreSQL veri güncelleme

PostgreSQL veri güncelleme için SQL UPDATE komutu ve exec, query, prepare metotları kullanılır.

// komutlar

$sira = 1;
$adi = "Yusuf Sefa";

$baglanti = new PDO($baglanti_cumlesi, null, null, $ayarlar);

$sorgu = $baglanti->prepare(
    "UPDATE kisiler SET kisi_adi = ? WHERE kisi_sira = ?"
);
$sorgu->bindParam(1, $adi, PDO::PARAM_STR);
$sorgu->execute();

if ($sorgu->rowCount() > 0) {
    echo $sorgu->rowCount() . " kayıt güncellendi.";
} else {
    echo "Herhangi bir kayıt güncellenemedi.";
}

// komutlar devam ediyor

NOT: Veri güncelleme işleminde WHERE kullanılmazsa tablodaki tüm veriler güncellenir.

PHP PostgreSQL veri silme

PostgreSQL veri silme için SQL DELETE komutu ve exec, query, prepare metotları kullanılır.

// komutlar

$sira = 1;

$baglanti = new PDO($baglanti_cumlesi, null, null, $ayarlar);

$sorgu = $baglanti->prepare("DELETE FROM kisiler WHERE kisi_sira = ?");
$sorgu->bindParam(1, $sira, PDO::PARAM_STR);
$sorgu->execute();

if ($sorgu->rowCount() > 0) {
    echo $sorgu->rowCount() . " kayıt silindi.";
} else {
    echo "Herhangi bir kayıt silinemedi.";
}

// komutlar devam ediyor

NOT: Veri silme işleminde WHERE kullanılmazsa tablodaki tüm veriler silinir.

PHP PostgreSQL sorgulama

PostgreSQL veri çekme, veri listeme veya sorgulama için SQL SELECT ve query, prepare metotları kullanılır.

Dışarıdan değer almayan veri çekme işlemi için query metodunu kullanabiliriz.

// komutlar

$baglanti = new PDO($baglanti_cumlesi, null, null, $ayarlar);

$sorgu = $baglanti->query(
    "SELECT kisi_adi, kisi_soyadi, kisi_eposta FROM kisiler"
);

$cikti = $sorgu->fetch(PDO::FETCH_ASSOC);

echo "Adı: " .
    $cikti["kisi_adi"] .
    "<br /> Soyadı: " .
    $cikti["kisi_soyadi"] .
    "<br /> E-posta: " .
    $cikti["kisi_eposta"];

// komutlar devam ediyor

Dışarıdan değer alarak sorgulama yapılacaksa prepare metodunun kullanımı faydalı olacaktır.

// komutlar

$sira = 1;
$baglanti = new PDO($baglanti_cumlesi, null, null, $ayarlar);

$sorgu = $baglanti->prepare("SELECT * FROM kisiler WHERE kisi_sira = ?");
$sorgu->bindParam(1, $sira, PDO::PARAM_INT);
$sorgu->execute();

$cikti = $sorgu->fetch(PDO::FETCH_ASSOC);

echo "Adı: " .
    $cikti["kisi_adi"] .
    "<br /> Soyadı: " .
    $cikti["kisi_soyadi"] .
    "<br /> E-posta: " .
    $cikti["kisi_eposta"];

// komutlar devam ediyor

PHP ile PostgreSQL işlemleri PDO sayesinde diğer veritabanı yönetim sistemlerinde olduğu gibi yapılır.

PDO ile işlem yaparken tüm veritabanları için ortak SQL komutlarını kullanmak farklı bir veritabanına geçişte faydalı olacaktır.

PHP Derslerine buradan ulaşabilirsiniz…

PostgreSQL Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.


Bunlarda ilgini çekebilir