SOL
SAĞ
PHP Data Object - PDO
SİDEBAR REKLAMI

Klasik veri tabanı bağlantısı mysql_connect() komutu ile yapılıyor, sorgu çalıştırma mysql_query() ile yapılıyor fakat pdo yapısı biraz farklı. PDO php 5.2 den sonra gelen bir veri tabanı sorgu sınıfı, yani nesne tabanlı bir yapı.
En güzel özelliği çoklu veri tabanı desteği olması. Oracle, SQL Server, MySQL gibi farklı veritabanlarına bağlanabilme özelliği sunuyor. Ayrıca kendi içerisinde sql injection koruması olan bir sınıftır.

$db = new PDO('mysql:host=localhost;dbname=veritabanı adı', 'kullanıcı adı', 'sifre');

PDO sınıfını db değişkenine bağlı olarak oluşturduk, sorgularımızı bu sınıfa bağlı methodlar ile yapacağız.

query() methodu genel olarak tüm sorgularda kullanılır.
exec() methodu bilgi girişi, güncelleme, silme gibi veri tabanına değer göndermede kullanılır.
prepare() methodu query() methodundaki gibi tüm sorguları çalıştırmada kullanılır fakat buna ek olarak bir de execute() methodu kullanılır, prepare ile yapılan sorgunun uygulanması için.
fetch() methodu; tek bir sonuç getirmek için kullanılır, query ile çalıştırılmışsa sorgu query den sonra, prepare ile çalıştırılmışsa sorgu execute methodundan sonra kullanılır.

Veritabanından dataların sayılarını getirmek istediğimizde fetch(PDO::FETCH_NUM) kullanılır.

Örnek olarak bir sorgu çalıştırayım, sorguyu query ile yapacağım.

$sorgu = $db->query('select * from blog where id=1')->fetch();

Veritabanından id değeri 1 olan konuyu getiren sorguyu yazdık. Bu şekilde de yapabilirdik

$sorgu = $db->query('select * from blog where id=1');
$sorgu->fetch();

İkisi de aynı işlemi yapıyor.
echo $sorgu['blog_baslik'];


İle konu başlığını yazdırmış oluruz.

Tüm konuların toplam sayılarını yazdırmak için

$konusayi = $db->query('select count(*) from blog')->fetch(PDO::FETCH_NUM);
echo $konusayi[0];

$konusayi değişkeni dizi tipinde bir değişken olduğu için $konusayi[0] şeklinde yazdırdık.


prepare() ile yaparsak eğer sorgumuz aşağıdaki gibi olacaktır;

$sorgu = $db->prepare('select * from blog where id=1');
$sorgu->execute();
$sorgu->fetch();
echo $sorgu['blog_baslik'];


Dışarıdan alınacaksa id bilgisi bunu parametre ile vermek daha iyidir, çünkü parametreyi tanımlarken o parametrenin integer veya string olma özelliğini kontrol ettirebiliyoruz. Parametre için bindValue() methodunu kullanıyoruz.

$sorgu = $db->prepare('select * from blog where id=:id');
$sorgu->bindValue(':id', $id, PDO::pARAM_INT);
$sorgu->execute();
$sorgu->fetch();
echo $sorgu['blog_baslik'];

Sorgumuzu yazarken :id kullandım, bu parametre, bunun değerini bindValue() methodu ile aktardım.
PDO::pARAM_INT ile gelecek değerin int tipinde olacağını belirttik.

Gelecek olan değerin string olması ile ilgili bir kontrol yaptıracaksak eğer PDO::pARAM_STR yazmalıyız INT yerine.

Şimdiye kadar veritabanından hep bilgi getirdik, aynı sorgularla insert, update, delete işlemleri de yapabiliriz.

Delete, update gibi işlemler için exec kullanabiliriz, ayrıca veri tabanı karakter seti belirleyeceksek yine exec kullanmalıyız.

$sorgu = $db->exec('delete from blog where id=1');

Blog id değeri 1 olan konuyu sildik. Fakat bu tarz işlemleri prepare ile yaparsak daha iyi olur.

Veya karakter seti ayarlayacaksak eğer

$db->exec("set names 'utf8'");

bu sorguyu kullanmalıyız.

YAZAR HAKKINDA;
arcface
Admin

Web Developer

KONU YORUMLARI
YORUM YAP
Image

SQL

PHP Data Object - PDO

PHP Data Object - PDO PHP Data Object - PDO PHP Data Object - PDO PHP Data Object - PDO PHP Data Object - PDO PHP Data Object - PDO PHP Data Object - PDO PHP Data Object - PDO

EN ÇOK OKUNAN 5 MAKALELER
arcface
Admin Yazdı;

2 ay önce

Yarı insan denilince ne anlıyoruz önce ona bir bakalım. Yarı insan; bi..

arcface
Admin Yazdı;

2 ay önce

Rubinum2 Web Panel Rubinum2 Web Panel Rubinum2 Web PanelRubinum2 Web..

arcface
Admin Yazdı;

2 ay önce

Afro2 Web Panel Kodlaması Afro2 Web Panel Kodlaması Afro2 Web Pane..

arcface
Admin Yazdı;

2 ay önce

Aegea2 Site Teması İndir Aegea2 Site Teması İndir Aegea2 Site Teması..

arcface
Admin Yazdı;

2 ay önce

Discord Widget Discord Widget Discord Widget Discord Widget Di..