romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP – PDO Uzantısı

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,439
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 6 Gün
Başarım Puanı
1,051
MmoLira
695,092
DevLira
234
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

PDO, PHP Veri Nesneleri için kullanılan bir kısaltmadır. PHP, ilişkisel ve NOSQL veritabanlarının çoğuyla etkileşime girebilir. Varsayılan PHP kurulumu, satıcıya özgü veritabanı uzantılarıyla birlikte gelir ve bunlar zaten kurulu ve etkinleştirilmiştir. MySQL için mysqli uzantısı gibi belirli bir veritabanı türüne özgü veritabanı sürücülerine ek olarak, PHP ayrıca PDO ve ODBC gibi soyutlama katmanlarını da destekler.

PDO uzantısı, PHP'de veritabanlarına erişim için hafif ve tutarlı bir arayüz tanımlar. Her satıcıya özgü uzantının işlevselliği diğerinden farklıdır. Sonuç olarak, belirli bir PHP uygulamasının arka uç veritabanını değiştirmeyi düşünüyorsanız, örneğin PostGreSql'den MySQL'e, kodda çok sayıda değişiklik yapmanız gerekir. Öte yandan PDO API, kullanılacak yeni veritabanının URL'sini ve kimlik bilgilerini belirtmek dışında herhangi bir değişiklik gerektirmez.

Mevcut PHP kurulumunuzun çalışabilmesi için ilgili PDO sürücüsünün mevcut olması gerekir. Şu anda aşağıdaki veritabanları ilgili PDO arayüzleriyle desteklenmektedir:

Sürücü AdıDesteklenen Veritabanları
PDO_CUBRIDKübik
PDO_DBLIBFreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRDAteş kuşu
PDO_IBMIBM DB2
PDO_INFORMIXIBM Informix Dinamik Sunucusu
PDO_MYSQLMySQL 3.x/4.x/5.x/8.x
PDO_OCIOracle Çağrı Arayüzü
PDO_ODBCODBC v3 (IBM DB2, unixODBC ve win32 ODBC)
PDO_PGSQLPostgreSQL
PDO_SQLITESQLite 3 ve SQLite 2
PDO_SQLSRVMicrosoft SQL Server / SQL Azure

Varsayılan olarak, PDO_SQLITE sürücüsü php.ini ayarlarında etkindir, bu nedenle bir MySQL veritabanıyla PDO aracılığıyla etkileşim kurmak istiyorsanız, aşağıdaki satırın başındaki noktalı virgülü kaldırarak yorum satırı olmaktan çıkarıldığından emin olun.

extension=pdo_mysql

Mevcut PDO sürücülerinin listesini PDO sınıfındaki PDO::getAvailableDrivers() statik fonksiyonunu çağırarak elde edebilirsiniz.

PDO Bağlantısı

PDO temel sınıfının bir örneği bir veritabanı bağlantısını temsil eder. Oluşturucu, veritabanı kaynağını (DSN olarak bilinir) ve isteğe bağlı olarak kullanıcı adı ve parolayı (varsa) belirtmek için parametreleri kabul eder.

Aşağıdaki kod parçacığı MySQL veritabanıyla bağlantı kurmanın tipik bir yoludur:

PHP:
<?php
   $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>

Herhangi bir bağlantı hatası olması durumunda PDOException nesnesi fırlatılacaktır.

Örnek

Aşağıdaki örneğe bir göz atın:

PHP:
<?php
   $dsn="localhost";
   $dbName="myDB";
   $username="root";     
   $password="";   
   try{
      $dbConn= new PDO("mysql:host=$dsn;dbname=$dbName",$username,$password);
      Echo "Successfully connected with $dbName database";
   } catch(Exception $e){
      echo "Connection failed" . $e->getMessage();
   }
?>

Aşağıdaki çıktıyı üretecektir:

Successfully connected with myDB database

Hata durumunda:

Connection failedSQLSTATE[HY000] [1049] Unknown database 'mydb'

PDO Sınıf Yöntemleri

PDO sınıfı aşağıdaki statik yöntemleri tanımlar:

PDO::beginTransaction

Bağlantı nesnesini elde ettikten sonra, bir işlemi başlatmak için bu metodu çağırmalısınız.

public PDO::beginTransaction(): bool

Bu yöntem otomatik onaylama modunu kapatır. Bu nedenle, veritabanında kalıcı değişiklikler yapmak için commit() yöntemini çağırmanız gerekir. rollBack()'i çağırmak, veritabanındaki tüm değişiklikleri geri alır ve bağlantıyı otomatik onaylama moduna döndürür. Bu yöntem başarılı olduğunda true, başarısız olduğunda false döndürür.

PDO::commit

commit() metodu bir işlemi kaydeder.

public PDO::commit(): bool

BeginTransaction otomatik onaylama modunu devre dışı bıraktığından, bu yöntemi bir işlemden sonra çağırmalısınız. Bir işlemi onaylar ve PDO::beginTransaction()'a yapılan bir sonraki çağrı yeni bir işlem başlatana kadar veritabanı bağlantısını otomatik onaylama moduna döndürür. Bu yöntem başarılı olduğunda true, başarısız olduğunda false döndürür.

PDO::exec

exec() yöntemi bir SQL ifadesini yürütür ve etkilenen satır sayısını döndürür.

public PDO::exec(string $statement): int|false

exec() metodu, tek bir fonksiyon çağrısında bir SQL ifadesini yürütür ve ifadeden etkilenen satır sayısını döndürür.

SELECT ifadesinden sonuç döndürmediğini unutmayın. Programınız sırasında yalnızca bir kez yürütülecek bir SELECT ifadeniz varsa, PDO::query()'yi yayınlamayı düşünün.

Öte yandan birden fazla kez çalıştırmanız gereken bir ifade için PDO :: prepare()() ile bir PDOStatement nesnesi hazırlayın ve PDOStatement::execute() ile ifadeyi çalıştırın.

exec() yönteminin hazırlanması ve yürütülmesi için bir SQL ifadesini temsil eden bir dize parametresine ihtiyacı vardır ve verdiğiniz SQL ifadesi tarafından değiştirilen veya silinen satır sayısını döndürür. Hiçbir satır etkilenmediyse, PDO::exec() 0 döndürür.

PDO::query

query() yöntemi, yer tutucular olmadan bir SQL ifadesi hazırlar ve yürütür.

public PDO::query(string $query, ?int $fetchMode = null): PDOStatement|false

Bu yöntem, tek bir fonksiyon çağrısında bir SQL ifadesini hazırlar ve yürütür ve ifadeyi bir PDOStatement nesnesi olarak döndürür.

PDO::rollBack

rollback() metodu, PDO::beginTransaction() tarafından başlatılan bir işlemi geri alır.

public PDO::rollBack(): bool

Veritabanı otomatik onaylama moduna ayarlanmışsa, bu fonksiyon işlemi geri aldıktan sonra otomatik onaylama modunu geri yükleyecektir.

MySQL dahil bazı veritabanlarının, bir işlem içinde DROP TABLE veya CREATE TABLE gibi bir DDL ifadesi yayınlandığında otomatik olarak örtük bir COMMIT yayınladığını ve dolayısıyla işlem sınırları içindeki diğer değişiklikleri geri almanızı engelleyeceğini unutmayın. Bu yöntem başarılı olduğunda true, başarısız olduğunda false döndürür.

Örnek

Aşağıdaki kod MySQL sunucusundaki myDB veritabanında bir öğrenci tablosu oluşturur.

PHP:
<?php
   $dsn="localhost";
   $dbName="myDB";
   $username="root";     
   $password="";   
   try{
      $conn= new PDO("mysql:host=$dsn;dbname=$dbName",$username,$password);
      Echo "Successfully connected with $dbName database";
      $qry = <<<STRING
      CREATE TABLE IF NOT EXISTS STUDENT (
         student_id INT AUTO_INCREMENT,
         name VARCHAR(255) NOT NULL,
         marks INTEGER(3),
         PRIMARY KEY (student_id)
      );
      STRING;
      echo $qry . PHP_EOL;
      $conn->exec($qry);
      $conn->commit();
      echo "Table created\n";
   }
   catch(Exception $e){
      echo "Connection failed : " . $e->getMessage();
   }
?>


Örnek

Yukarıdaki örnekte oluşturulan öğrenci tablosuna yeni bir kayıt eklemek için aşağıdaki kodu kullanın:

PHP:
<?php
   $dsn="localhost";
   $dbName="myDB";
   $username="root";     
   $password="";   
   try {
      $conn= new PDO("mysql:host=$dsn;dbname=$dbName",$username,$password);
      echo "Successfully connected with $dbName database";

      $sql = "INSERT INTO STUDENT values(1, 'Raju', 60)";
      $conn->exec($sql);
      $conn->commit();
      echo "A record inserted\n";
   } catch(Exception $e){
      echo "Connection failed : " . $e->getMessage();
   }
?>

Örnek

Aşağıdaki PHP betiği öğrenci tablosundaki tüm kayıtları getirir:

PHP:
<?php
   $dsn="localhost";
   $dbName="myDB";
   $username="root";     
   $password=""; 
   try {
      $conn= new PDO("mysql:host=$dsn;dbname=$dbName",$username,$password);
      echo "Successfully connected with $dbName database";
      $sql = "SELECT * from student";
      $statement = $conn->query($sql);
      $rows = $statement->fetchAll(PDO::FETCH_ASSOC);

      foreach ($rows as $row) {
         var_dump($row);
      }     
   } catch(Exception $e){
      echo "Connection failed : " . $e->getMessage();
   }
?>
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst