OW Debug - Notice
Message: Trying to access array offset on value of type null
File: /home/romarekl/public_html/sosyallift.com/ow_plugins/forum/controllers/topic.php
Line: 136
PHP- PDO ile Veritabanı işlemi yapma [PDO-Database Plugin] Forum | ...
Loading...
 
tr
Konu yeri: Forum » General » General Chat
Plugin Script
Plugin Script Mayıs 18 '19
Database Plugin
Titan Mini Framework, veritabanı işlemleri için PHP'nin PDO kütüphanesinden türetilmiş TitanDB kütüphanesini kullanır.

                          *   Veritabanı bağlantısı kurma
                          *   Tek satır veri çekme » row()
                          *   Çoklu veri çekme » results()
                          *   JOIN Kullanımı » join()
                          *   WHERE Kullanımı » where()
                          *   ORDER BY ve LIMIT Kullanımı » order_by(), limit()
                          *   GROUP BY Kullanımı » group_by()
                          *   HAVING Kullanımı » having()
                          *   LIKE ve NOT LIKE Kullanımı » like(), not_like()
                          *   IN ve NOT IN Kullanımı » in(), not_in()
                          *   Veri Ekleme » insert()
                          *   Veri Güncelleme » update()
                          *   Veri Silme » delete()
                          *   Son Eklenen Kayıt ID » insert_id()
                          *   Kayıt Sayısını Bulma » num_rows()
                          *   Son Çalıştırılan Sorguyu Bulma » last_query()
                          *   SQL Sorgusu Çalıştırma » query()
                          *   PDO Methodlarına Erişim » pdo()
                          *   Plugin ve Helper içerisinden Erişim



Veritabanı Bağlantısı Kurma
Titan MiniFramework üzerinde veritabanı bağlantısı kurmak için /app/config dizininde bulunan db.php dosyasında bağlantı ile ilgili ayarlar yapılmalıdır.


PHP return [ 'db_driver' => '',

// Database driver 'db_host' => '',

// Database host (örnek: 'localhost') 'db_user' => '',

// Database kullanıcı adı 'db_pass' => '',

// Database şifresi 'db_name' => '',

// Database adı 'db_charset' => 'utf8',

// Database charset 'db_collation' => 'utf8_general_ci',

// Database collation 'db_prefix' => ''

// Database prefix ];

 

Root dizinde bulunan index.php dosyasındaki ENVIRONMENT sabiti development olarak tanımlanmış ise, /app/config dizininde development adında bir dizin oluşturulmalı ve db.php dosyasının bir kopyası bu dizine alınmalıdır. Bu sayede uygulama production ortamında ya da development ortamında çalıştığında veritabanı bağlantı bilgilerini değiştirmeye gerek kalmaz. Sadece ENVIRONMENT sabitini ilgili ortama göre belirlemek yeterlidir.

 

 

 

 

Tek Satir Veri Çekme

Veritabanında ki bir tablodan tek satır kayıt çekmek için;

PHP// İstenilen kolonları seçmek için

// SELECT kolon1, kolon2, ... FROM tablo

$this->db->select('kolon1, kolon2, ...') ->from('tablo') ->get() ->row();

// SELECT kolon1 as k1, kolon2 as k2, ... FROM tablo as t1

$this->db->select('kolon1 as k1, kolon2 as k2, ...') ->from('tablo as t1') ->get() ->row();

// İlgili kayıttaki tüm kolonları seçmek için

$this->db->get('tablo')->row(); // SELECT * FROM tablo

 

 

 

 

Çoklu Veri Çekme

Veritabanindaki bir tablodan birden fazla sayida kayit çekmek için ;

PHP// İstenilen kolonları seçmek için

// SELECT kolon1, kolon2, ... FROM tablo

$this->db->select('kolon1, kolon2, ...') ->from('tablo') ->get() ->results();

// SELECT kolon1 as k1, kolon2 as k2, ... FROM tablo as t1

$this->db->select('kolon1 as k1, kolon2 as k2, ...') ->from('tablo as t1') ->get() ->results();

// İlgili kayıttaki tüm kolonları seçmek için

$this->db->get('tablo')->results(); // SELECT * FROM tablo

 

 

 

 

JOIN Kullanımı

Birden fazla tablodan kayıt çekmek için join() methodu kullanılır. 3 Paremetre alır; birleştirilecek tablo ismibirleştirme koşulu ve join tipi.

PHP// LEFT JOIN kullanarak çoklu veri çekme örneği

// SELECT t1.kolon1, t1.kolon2, t2.kolon3, t2.kolon4 FROM tablo_1 as t1 LEFT JOIN tablo_2 as t2 ON t1.id=t2.id

$this->db->select('t1.kolon1, t1.kolon2, t2.kolon3, t2.kolon4') ->from('tablo_1 as t1') ->join('tablo_2 as t2', 't1.id=t2.id', 'left') ->get() ->results();

 

 

 

 

WHERE Kullanımı

Herhangi bir tablodan çekilen verilere koşul eklemek için where()or_where methodları kullanılır. 3 Parametre alır; kolon adıdeğer ve mantıksal operatör.

PHP// SELECT kolon1, kolon2 FROM tablo WHERE id=5

$this->db->select('kolon1, kolon2') ->from('tablo') ->where('id', 5) ->get() ->row();

// SELECT kolon1, kolon2 FROM tablo WHERE id>5

$this->db->select('kolon1, kolon2') ->from('tablo') ->where('id', 5, '>') ->get() ->results();

// SELECT ad, soyad FROM tablo WHERE yas>20 AND il=34

$this->db->select('ad, soyad') ->from('tablo') ->where('yas', 20, '>') ->where('il', 34) ->get() ->results();

// SELECT ad, soyad FROM tablo WHERE yas>20 OR dogum_tarihi>1996

$this->db->select('ad, soyad') ->from('tablo') ->where('yas', 20, '>') ->or_where('dogum_tarihi', 1996, '>') ->get() ->results();

 

 

 

 

ORDER BY ve LIMIT Kullanımı

Herhangi bir tablodan çekilen kayıtları sıralamak için order_by() methodu kullanilir. Sıralama türüne göre asc ve desc parametrelerinden birini alır. Varsayılan değer asc dir.

Belirli sayıda kayıt sorgulamak için limit() methodu kullanılır. 2 Parametre alabilir. İlki çekilecek kayıt sayısını belirtir. İkinci parametre ise zorunlu değildir ve kaçıncı kayıttan itibaren başlanacağını belirtir. Varsayılan değeri 0'dır.

PHP// SELECT ad, soyad FROM tablo ORDER BY yas ASC LIMIT 20

$this->db->select('ad, soyad') ->from('tablo') ->order_by('yas', 'asc') ->limit(20) ->get() ->results();

 

 

 

 

GROUP BY Kullanımı

Herhangi bir tablodan çekilen kayıtları gruplamak için group_by() methodu kullanılır. Gruplama yapılacak kolon ismini parametre olarak alır.

PHP// SELECT ad, soyad, kitap, COUNT FROM tablo GROUP BY kitap

$this->db->select('ad, soyad, kitap, COUNT') ->from('tablo') ->group_by('kitap') ->get() ->results();

 

 

 

 

HAVING Kullanımı

GROUP BY ile gruplanan kayıtlar üzerinde koşul belirlemek için having() methodu kullanılır. Kullanımı where() methodu ile aynı şekildedir.

PHP// SELECT ad, soyad, kitap, COUNT GROUP BY kitap HAVING COUNT>15

$this->db->select('ad, soyad, kitap, COUNT') ->from('tablo') ->group_by('kitap') ->having('COUNT', 15, '>') ->get() ->results();

 

 

 

 

LIKE ve NOT LIKE Kullanımı

LIKE ve NOT LIKE ile koşullu sorgulama yapmak için like()or_like() ve not_like() methodları kullanılır.

PHP// SELECT ad, soyad FROM tablo WHERE ad LIKE 'AHMET%'

$this->db->select('ad, soyad') ->from('tablo') ->like('soyad', '%OĞLU') ->get() ->results();

// SELECT ad, soyad FROM tablo WHERE ad LIKE 'AHMET%' OR ad LIKE 'MEHMET%'

$this->db->select('ad, soyad') ->from('tablo') ->like('ad', 'AHMET%') ->or_like('ad', 'MEHMET%') ->get() ->results();

// SELECT ad, soyad FROM tablo WHERE ad NOT LIKE 'AHMET%'

$this->db->select('ad, soyad') ->from('tablo') ->not_like('ad', 'AHMET%') ->get() ->results();

 

 

 

 

IN ve NOT IN Kullanımı

IN ve NOT IN ile koşullu sorgulama yapmak için in() ve not_in() methodları kullanılır.

PHP// SELECT ad, soyad FROM tablo WHERE sehir IN(9, 35, 20, 48)

$this->db->select('ad, soyad') ->from('tablo') ->in('sehir', [9,35,20,48]) ->get() ->results();

// SELECT ad, soyad FROM tablo WHERE sehir NOT IN(9, 35, 20, 48)

$this->db->select('ad, soyad') ->from('tablo') ->not_in('sehir', [9,35,20,48]) ->get() ->results();

 

 

 

Veri Ekleme

Herhangi bir tabloya veri eklemek için insert() methodu kullanılır. 2 Parametre alır; kayıt eklenecek tablo adı ve eklenecek kayıtların bulunduğu dizi.

PHP// INSERT INTO tablo SET

ad='John',

soyad='Doe',

sehir=34

$veriler = [ 'ad' => 'John', 'soyad' => 'Doe', 'sehir' => 34 ]; $this->db->insert('tablo', $veriler);

 

 

 

 

Veri Güncelleme

Herhangi bir tablodaki bir ya da birden fazla kayıt üzerinde düzeltme yapmak için update() methodu kullanılır. 2 Parametre alır; düzeltme yapılacak tablo adı ve düzeltilecek alanlarla yeni değerlerinin bulunduğu dizi.

PHP// UPDATE tablo SET ad='John', soyad='Doe', sehir=34 WHERE id=15 $veriler = [ 'ad' => 'John', 'soyad' => 'Doe', 'sehir' => 34 ];

$this->db->where('id', 15);

$this->db->update('tablo', $veriler);

 

 

 

 

Veri Silme

Herhangi bir tablodan bir ya da birden fazla kayıt silmek için delete() methodu kullanılır. Silme işleminin yapılacağı tablo adı parametre olarak verilir.

PHP// DELETE FROM tablo WHERE id=15

$this->db->where('id', 15);

$this->db->delete('tablo');

 

 

 

Son Eklenen Kayıt ID

En son çalıştırılan insert sorgusu sonucunda eklenen kaydın id değerini öğrenmek için insert_id() methodu kullanılır.

PHP$veriler = [ 'ad' => 'John', 'soyad' => 'Doe', 'sehir' => 34 ];

$this->db->insert('tablo', $veriler);

echo

$this->db->insert_id();

 

 

 

 

Kayıt Sayısını Bulma

Bir sorgu sonucunda çekilen kayıt sayısını öğrenmek için num_rows() methodu kullanılır.

PHP$this->db->select('*') ->from('tablo') ->where('yas', 20, '>') ->get() ->results();

echo

$this->db->num_rows();

 

 

 

Son Çalıştırılan Sorguyu Bulma

En son çalıştırılan SQL sorgusunu öğrenmek için last_query() methodu kullanılır.

PHPecho $this->db->last_query();

 

 

 

SQL Sorgusu Çalıştırma

SQL cümlesi yazarak sorgu çalıştırmak için query() methodu kullanılır.

PHP// Tek satır veri çekmek için

$this->db->query("SELECT * FROM tablo WHERE id=5")->row();

// Çoklu veri çekmek için

$this->db->query("SELECT * FROM tablo")->results();

// Kayıt eklemek için

$this->db->query("INSERT INTO tablo SET kolon1='deger1', kolon2='deger2'");

// Kayıt güncellemek için

$this->db->query("UPDATE tablo SET kolon1='deger1', kolon2='deger2' WHERE id=5");

// Kayıt silmek için

$this->db->query("DELETE FROM tablo WHERE id=5");

// Stored Procedure çalıştırmak için

$this->db->query("CALL procedure_1()");

 

 

 

PDO Methodlarına Erişim

TitanDB'nin türetilmiş olduğu PDO nesnesine ait methodlara erişmek için pdo() methodu kullanılır.

PHP$this->db->pdo->prepare("SELECT * FROM table WHERE column1 < ? AND column1 > ?");

$this->db->pdo->execute([250, 100]);

$results = $this->db->pdo->fetchAll();

 

 

 

Plugin ve Helper İçerisinden Erişim

Framework içerisindeki plugin ve helper dosyalarından database nesnesine erişmek için, yükleyici sınıfta bulunan database() methodu kullanılır.

 

Plugin içerisinden erişmek için;

PHP class Ornek {

private $titan;

private $db;

 

function ornekFonksiyon() {

$this->titan = Loader::getInstance();

$this->db = $this->titan->database();

} }

 

 

Helper içerisinden erişmek için;

PHP function ornekFonksiyon() {

$titan = Loader::getInstance();

$db = $titan->database();

}

Düzenlendi... Plugin Script (Ekim 19 '21)
Paylaş: