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 |
// 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 ismi, birleş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();
}