PHP Veri Nesneleri (PDO) eklentisi, PHP'deki veritabanlarına erişmek için hafif ve tutarlı bir arayüz tanımlar. PDO arayüzü tanımı bulunan her veritabanı sürücüsü, veritabanına özgü özellikleri sıradan eklenti işlevleri olarak ifade edebilir
Başlangıç için bu kadar bilgi yeterli değilse buradan manual sayfasındaki dokümanlara göz atabilirsiniz.
PHP 5 + sürümleri ile uyumluluk göstermektedir, desteklediği veritabanları şunlardır
- DBLIB: FreeTDS / Microsoft SQL Server / Sybase
- Firebird (http://firebird.sourceforge.net/): Firebird/Interbase 6
- IBM (IBM DB2)
- INFORMIX - IBM Informix Dynamic Server
- MYSQL (http://www.mysql.com/): MySQL 3.x/4.0
- OCI (http://www.oracle.com): Oracle Call Interface
- ODBC: ODBC v3 (IBM DB2 and unixODBC)
- PGSQL (http://www.postgresql.org/): PostgreSQL
- SQLITE (http://sqlite.org/): SQLite 3.x
Local serverinizde phpinfo() fonksiyonumuzu çalıştıralım ve PDO eklentisinin aktif olup olmadığını görelim.
pdo_mysql kelimesini arama yapın uygun sonuç varsa işlem yapmamıza gerek yok , eğer yoksa php.ini dosyamızda birkaç değişiklik yapacağız.
Mysql için eklenti kodumuz
[PHP_PDO]
extension=php_pdo.dll
[PHP_MYSQL]
extension=php_mysql.dll
desteklediği diğer veritabanları için php.ini dosyamıza eklenecek kodlarımız
extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
Hangi driverlerimiz aktif onu görelim
PDO::getAvailableDrivers() statik metodumuz ile kontrol edelim
[cc lang="php"]
foreach(PDO::getAvailableDrivers() as $driver)
{
echo $driver.'
';
}
?>
[/cc]
database driverleri default konumdaysa muhtemelen sonuç şu şekil olmalı
- mysql
- sqlite
- sqlite2
Örnek Mysql veritabanımıza bağlanalım
[cc lang="php"]
try {
$db = new PDO("mysql:dbname=test;host=localhost", "user", "pass" );
echo "PDO connection!";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
[/cc]
Herhangi problem yoksa PDO connection! mesajını göreceksiniz.
Örnek PostgreSQL veritabanımıza bağlanalım
[cc lang="php"]
try {
$db = new PDO("pgsql:dbname=test;host=localhost", "user", "pass" );
echo "PDO connection!";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
[/cc]
Örnek SQLite veritabanımıza bağlanalım
[cc lang="php"]
try {
$db = new PDO("sqlite:/path/to/database.sdb");
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
[/cc]
Bağlantı kodumuzda try ve catch bloğumuz içerisine yazdığımız bağlantı kodumuz hata olasılığında catch kısmı devreye girecektir.
Çalışmamızı try kod bloğunun içinde yapmamız daha temiz olacaktır.
Tüm veritabanlarını listeleyelim
[cc lang="php"]
foreach ($db->query('SHOW DATABASES') as $row) {
print_r($row);
}
[/cc]
Insert
[cc lang="php"]
$db->exec("INSERT INTO cms(name, languages) VALUES ('wordpress', 'PHP')");
[/cc]
Select
[cc lang="php"]
$sql = "SELECT * FROM cms";
foreach ($db->query($sql) as $row)
{
echo $row['name'].' : '.$row['languages'].'
';
}
[/cc]
Update
[cc lang="php"]
$db->exec("UPDATE cms SET name='habari' WHERE languages='PHP'");
[/cc]
Daha detaylı bilgi isterseniz php.net manual veya buradan ulaşabilirsiniz.
Bu İçeriğe Ulaşmak için Arama Motorlarında Şu Şekilde Arama Yapıyorlar :
PHP Data Object (PDO),
Güzel bir yazı olmuş ellerinize saglık
YanıtlaSilEmeğinize Sağlık Cok Güzel Bi Anlatım Olmuş.
YanıtlaSilhocam güzel bir anlatım saolun :)
YanıtlaSilelinize sağlık güzel yazı olmus. birşey daha sormak istiyorum konuyla alakalı değil ama php konusunda başlangıç için düzgün bir kitap önerebilirmisiniz. yada görsel eğitim mi daha iyi olur sizce. ilginiz için tşkler.g
YanıtlaSilMerhaba , başlangıc kitabı olarak rıza çelik a'dan z'ye php kitabını tavsiye ederim.
YanıtlaSilhttp://adanzyephp.com
Merhaba hocam, Güzel bir yazı olmuş. Bu arayüz sizde ne kadar güvenli ?
YanıtlaSilMerhaba, hangi ara yüzden bahsediyorsunuz
YanıtlaSilBu PDO yu kastediyorum usta
YanıtlaSilMysqli mi yoksa PDO kullanmayı mı tavsiye edersiniz?
YanıtlaSilPDO kullanmanızı tavsiye ederim, kolay gelsin
YanıtlaSilsayın hocam verdiğiniz kodların bir kısmını denedim ancak bir yerde sorun almaya başladım
YanıtlaSil<?php
foreach(PDO::getAvailableDrivers() as $driver)
{
echo $driver.'';
}
?>
getMessage();
}
?>
getMessage();
}
?>
getMessage();
}
?>
( şifre ve veri tabanı bilgilerimi burada değiştirdim )
sonuçun şöle bir çıktısı oldu
sqlite
sqlite2
mysql
PDO connection!
could not find driver
SQLSTATE[HY000] [14] unable to open database file
buradaki sorun nedir acaba
Merhaba, kullandığınız yerel sunucu veya eklenti yolları ile alakalı bir durum olabilir, wamp server de yapar bu durumu
YanıtlaSilMysql injection için herhangi bir önlem almamıza gerek var mı ?
YanıtlaSilEk olarak tek sonuç döndüren sorgularda aşağıdaki kullanım dışında bir kullanım var mıdır ?
YanıtlaSil$sorgu=$db->query("select isim,soyisim,dogum from ogrenciler where kimlik='$kimlik'");
foreach($sorgu as $s){
}
Buradan tek bir öğrenciye ait bilgiler dönüyor ben bunu döngü olarak değilde istediğim gibi bir dizinin değişkenleri şeklinde html kodlarının farklı farklı yerlerinde kullanmak istiyorum.Yukarıdaki gibi kullanım $s dizisine dönen sonucu atıyor ama bana pek kullanışlı gibi gelmedi.
Daha basit bir kullanımı var mıdır ?
Merhaba PDO ;) Tesekkurler hocam
YanıtlaSilip adres : 123.12.15.12
YanıtlaSilvt adı: ornek.FDB
localdeki yeri : D:\ornek\ornek.FDB
port :3050
sorgu türü :PDO
yukarıdaki bilgilerle nasıl sorgu oluşturabilrim ip ile bağlanamıyorum
Merhaba, sunucu yetkilinizden veritabanı bağlantı adresini alınız.
YanıtlaSilsunucuyla alakalı değil netten kendi billgisayarıma bağlanacağım. verdiğim ip adresim kendi bilgisayarımın ip adresi
YanıtlaSil$yenidb= new PDO('firebird:dbname=".$db";port=".$port.";host=".$adres.";charset=UTF8',$kadi,$sifre);
böyle bir sorgum var ama bağlanamıyorum nerede hata yapıyorum bilmiyorum. yardımcı olursanız sevinirim...