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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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