CodeIgniter - Veritabanı ile Çalışma

Diğer herhangi bir çerçeve gibi, veritabanıyla çok sık etkileşim kurmamız gerekiyor ve CodeIgniter bu işi bizim için kolaylaştırıyor. Veritabanı ile etkileşim için zengin işlevler sağlar.

Bu bölümde CRUD (Oluşturma, Okuma, Güncelleme, Silme) işlevlerinin CodeIgniter ile nasıl çalıştığını anlayacağız. Kullanacağızstud verileri seçmek, güncellemek, silmek ve eklemek için tablo stud tablo.

Tablo Adı: saplama
roll_no int (11)
isim varchar (30)

Bir Veritabanına Bağlanma

Veritabanına aşağıdaki iki şekilde bağlanabiliriz -

  • Automatic Connecting- Application / config / autoload.php dosyası kullanılarak otomatik bağlantı yapılabilir. Otomatik bağlantı her sayfa için veritabanını yükleyecektir. Veritabanı kitaplığını aşağıda gösterildiği gibi eklememiz gerekiyor -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Yalnızca bazı sayfalar için veritabanı bağlantısı istiyorsanız, manuel bağlantıya geçebiliriz. Herhangi bir sınıfa aşağıdaki satırı ekleyerek veritabanına manuel olarak bağlanabiliriz.

$this->load->database();

Burada herhangi bir argüman iletmiyoruz çünkü her şey uygulama / config / veritabanı.php veritabanı yapılandırma dosyasında ayarlanmıştır.

Kayıt Ekleme

Veritabanına bir kayıt eklemek için aşağıdaki tabloda gösterildiği gibi insert () işlevi kullanılır -

Syntax

ekle ([ $ tablo = '' [, $ set = NULL [, $ escape = NULL ]]])

Parameters

  • $table( string ) - Tablo adı

  • $set( dizi ) - Bir ilişkili alan / değer çiftleri dizisi

  • $escape( bool ) - Değerlerden ve tanımlayıcılardan çıkış yapılıp yapılmayacağı

Returns

Başarıda DOĞRU, başarısızlıkta YANLIŞ

Return Type

bool

Aşağıdaki örnek, bir kaydın nasıl ekleneceğini gösterir. studtablo. $ Veri, verileri ayarladığımız ve bu verileri tabloya eklediğimiz bir dizidir.stud, bu diziyi 2. argümandaki insert işlevine geçirmemiz gerekiyor .

$data = array( 
   'roll_no' => ‘1’, 
   'name' => ‘Virat’ 
); 

$this->db->insert("stud", $data);

Bir Kaydı Güncelleme

Veritabanındaki bir kaydı güncellemek için, update() işlevi ile birlikte kullanılır set() ve where()aşağıdaki tablolarda gösterildiği gibi çalışır. set() işlevi, güncellenecek verileri ayarlayacaktır.

Syntax

set ( $ anahtar [, $ değer = '' [, $ kaçış = NULL ]])

Parameters

  • $key( karışık ) - Alan adı veya alan / değer çiftleri dizisi

  • $value( string ) - $ key tek bir alansa alan değeri

  • $escape( bool ) - Değerlerden ve tanımlayıcılardan çıkış yapılıp yapılmayacağı

Returns

CI_DB_query_builder örneği (yöntem zinciri)

Return Type

CI_DB_query_builder

where() fonksiyon hangi kaydın güncelleneceğine karar verecektir.

Syntax

nerede ( $ anahtar [, $ değer = NULL [, $ escape = NULL ]])

Parameters

  • $key( karma ) - Karşılaştırılacak alanın adı veya ilişkilendirilebilir dizi

  • $value( karışık ) - Bu değere kıyasla tek bir anahtar ise

  • $escape( bool ) - Değerlerden ve tanımlayıcılardan çıkış yapılıp yapılmayacağı

Returns

DB_query_builder örneği

Return Type

nesne

Son olarak update() işlevi veri tabanındaki verileri güncelleyecektir.

Syntax

güncelleme ([ $ tablo = '' [, $ set = NULL [, $ burada = NULL [, $ limit = NULL ]]]])

Parameters

  • $table( string ) - Tablo adı

  • $set( dizi ) - Bir ilişkili alan / değer çiftleri dizisi

  • $where( string ) - WHERE yan tümcesi

  • $limit( int ) - LIMIT yan tümcesi

Returns

Başarıda DOĞRU, başarısızlıkta YANLIŞ

Return Type

bool
$data = array( 
   'roll_no' => ‘1’, 
   'name' => ‘Virat’ 
); 

$this->db->set($data); 
$this->db->where("roll_no", ‘1’); 
$this->db->update("stud", $data);

Bir Kaydı Silme

Veritabanındaki bir kaydı silmek için aşağıdaki tabloda gösterildiği gibi delete () işlevi kullanılır -

Syntax

sil ([ $ tablo = '' [, $ nerede = '' [, $ limit = NULL [, $ reset_data = DOĞRU ]]]])

Parameters

  • $table( karışık ) - Silinecek tablo (lar); dizi veya dizi

  • $where( string ) - WHERE yan tümcesi

  • $limit( int ) - LIMIT yan tümcesi

  • $reset_data( bool ) - "write" sorgusunu sıfırlamak için TRUE

Returns

CI_DB_query_builder örneği (yöntem zinciri) veya başarısızlık durumunda FALSE

Return Type

karışık

Bir kaydı silmek için aşağıdaki kodu kullanın. studtablo. İlk argüman, kayıt silinecek tablonun adını belirtir ve ikinci argüman hangi kaydın silineceğine karar verir.

$this->db->delete("stud", "roll_no = 1");

Bir Kayıt Seçme

Veritabanında bir kayıt seçmek için, get işlevi aşağıdaki tabloda gösterildiği gibi kullanılır -

Syntax

get ([ $ tablo = '' [, $ limit = NULL [, $ offset = NULL ]]])

Parameters

  • $table( string ) - Diziyi sorgulayacak tablo

  • $limit( int ) - LIMIT yan tümcesi

  • $offset( int ) - OFFSET yan tümcesi

Returns

CI_DB_result örneği (yöntem zinciri)

Return Type

CI_DB_result

Veritabanından tüm kayıtları almak için aşağıdaki kodu kullanın. İlk ifade "stud" tablosundaki tüm kayıtları alır ve $ query nesnesinde saklanacak olan nesneyi döndürür. İkinci ifade,result() Tüm kayıtları dizi olarak almak için $ sorgu nesnesiyle işlev.

$query = $this->db->get("stud"); 
$data['records'] = $query->result();

Bir Bağlantıyı Kapatma

Aşağıdaki kod çalıştırılarak veritabanı bağlantısı manuel olarak kapatılabilir -

$this->db->close();

Misal

Adlı bir denetleyici sınıfı oluşturun Stud_controller.php ve kaydet application/controller/Stud_controller.php

İşte yukarıda bahsedilen işlemlerin tamamının gerçekleştirildiği eksiksiz bir örnek. Aşağıdaki örneği çalıştırmadan önce, bu bölümün başında belirtildiği gibi bir veritabanı ve tablo oluşturun ve şu adreste depolanan veritabanı yapılandırma dosyasında gerekli değişiklikleri yapın.application/config/database.php

<?php 
   class Stud_controller extends CI_Controller {
	
      function __construct() { 
         parent::__construct(); 
         $this->load->helper('url'); 
         $this->load->database(); 
      } 
  
      public function index() { 
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
			
         $this->load->helper('url'); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function add_student_view() { 
         $this->load->helper('form'); 
         $this->load->view('Stud_add'); 
      } 
  
      public function add_student() { 
         $this->load->model('Stud_Model');
			
         $data = array( 
            'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') 
         ); 
			
         $this->Stud_Model->insert($data); 
   
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function update_student_view() { 
         $this->load->helper('form'); 
         $roll_no = $this->uri->segment('3'); 
         $query = $this->db->get_where("stud",array("roll_no"=>$roll_no));
         $data['records'] = $query->result(); 
         $data['old_roll_no'] = $roll_no; 
         $this->load->view('Stud_edit',$data); 
      } 
  
      public function update_student(){ 
         $this->load->model('Stud_Model');
			
         $data = array( 
            'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') 
         ); 
			
         $old_roll_no = $this->input->post('old_roll_no'); 
         $this->Stud_Model->update($data,$old_roll_no); 
			
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function delete_student() { 
         $this->load->model('Stud_Model'); 
         $roll_no = $this->uri->segment('3'); 
         $this->Stud_Model->delete($roll_no); 
   
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
   } 
?>

Adlı bir model sınıfı oluşturun Stud_Model.php ve içine kaydet application/models/Stud_Model.php

<?php 
   class Stud_Model extends CI_Model {
	
      function __construct() { 
         parent::__construct(); 
      } 
   
      public function insert($data) { 
         if ($this->db->insert("stud", $data)) { 
            return true; 
         } 
      } 
   
      public function delete($roll_no) { 
         if ($this->db->delete("stud", "roll_no = ".$roll_no)) { 
            return true; 
         } 
      } 
   
      public function update($data,$old_roll_no) { 
         $this->db->set($data); 
         $this->db->where("roll_no", $old_roll_no); 
         $this->db->update("stud", $data); 
      } 
   } 
?>

Adlı bir görünüm dosyası oluşturun Stud_add.php ve içine kaydet application/views/Stud_add.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
   <body> 
         <?php 
            echo form_open('Stud_controller/add_student');
            echo form_label('Roll No.'); 
            echo form_input(array('id'=>'roll_no','name'=>'roll_no')); 
            echo "<br/>"; 
			
            echo form_label('Name'); 
            echo form_input(array('id'=>'name','name'=>'name')); 
            echo "<br/>"; 
			
            echo form_submit(array('id'=>'submit','value'=>'Add')); 
            echo form_close(); 
         ?> 
   </body>
</html>

Adlı bir görünüm dosyası oluşturun Stud_edit.php ve içine kaydet application/views/Stud_edit.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
	
   <body> 
      <form method = "" action = "">
		
         <?php 
            echo form_open('Stud_controller/update_student'); 
            echo form_hidden('old_roll_no',$old_roll_no); 
            echo form_label('Roll No.'); 
            echo form_input(array('id'⇒'roll_no',
               'name'⇒'roll_no','value'⇒$records[0]→roll_no)); 
            echo "
            "; 

            echo form_label('Name'); 
            echo form_input(array('id'⇒'name','name'⇒'name',
               'value'⇒$records[0]→name)); 
            echo "
            "; 

            echo form_submit(array('id'⇒'sub mit','value'⇒'Edit')); 
            echo form_close();
         ?> 
			
      </form> 
   </body>
	
</html>

Adlı bir görünüm dosyası oluşturun Stud_view.php ve içine kaydet application/views/Stud_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head>
	
   <body> 
      <a href = "<?php echo base_url(); ?>
         index.php/stud/add_view">Add</a>
		
      <table border = "1"> 
         <?php 
            $i = 1; 
            echo "<tr>"; 
            echo "<td>Sr#</td>"; 
            echo "<td>Roll No.</td>"; 
            echo "<td>Name</td>"; 
            echo "<td>Edit</td>"; 
            echo "<td>Delete</td>"; 
            echo "<tr>"; 
				
            foreach($records as $r) { 
               echo "<tr>"; 
               echo "<td>".$i++."</td>"; 
               echo "<td>".$r->roll_no."</td>"; 
               echo "<td>".$r->name."</td>"; 
               echo "<td><a href = '".base_url()."index.php/stud/edit/"
                  .$r->roll_no."'>Edit</a></td>"; 
               echo "<td><a href = '".base_url()."index.php/stud/delete/"
                  .$r->roll_no."'>Delete</a></td>"; 
               echo "<tr>"; 
            } 
         ?>
      </table> 
		
   </body>
	
</html>

Yol dosyasında aşağıdaki değişikliği yapın application/config/routes.php ve aşağıdaki satırı dosyanın sonuna ekleyin.

$route['stud'] = "Stud_controller"; 
$route['stud/add'] = 'Stud_controller/add_student'; 
$route['stud/add_view'] = 'Stud_controller/add_student_view'; 
$route['stud/edit/(\d+)'] = 'Stud_controller/update_student_view/$1'; 
$route['stud/delete/(\d+)'] = 'Stud_controller/delete_student/$1';

Şimdi, tarayıcıda aşağıdaki URL'yi ziyaret ederek bu örneği yürütelim. Siteniz.com'u URL'nizle değiştirin.

http://yoursite.com/index.php/stud