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_CUBRID
Kübik
PDO_DBLIB
FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD
Ateş kuşu
PDO_IBM
IBM DB2
PDO_INFORMIX
IBM Informix Dinamik Sunucusu
PDO_MYSQL
MySQL 3.x/4.x/5.x/8.x
PDO_OCI
Oracle Çağrı Arayüzü
PDO_ODBC
ODBC v3 (IBM DB2, unixODBC ve win32 ODBC)
PDO_PGSQL
PostgreSQL
PDO_SQLITE
SQLite 3 ve SQLite 2
PDO_SQLSRV
Microsoft 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.
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.
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.
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.
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
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: