CodeIgniter - Bekerja dengan Database
Seperti kerangka kerja lainnya, kita perlu berinteraksi dengan database sangat sering dan CodeIgniter memudahkan pekerjaan ini bagi kita. Ini menyediakan serangkaian fungsi yang kaya untuk berinteraksi dengan database.
Di bagian ini, kita akan memahami bagaimana fungsi CRUD (Buat, Baca, Perbarui, Hapus) bekerja dengan CodeIgniter. Kami akan menggunakanstud tabel untuk memilih, memperbarui, menghapus, dan memasukkan data stud meja.
Nama Tabel: stud | |
---|---|
roll_no | int (11) |
nama | varchar (30) |
Menghubungkan ke Database
Kita dapat terhubung ke database dengan dua cara berikut -
Automatic Connecting- Koneksi otomatis dapat dilakukan dengan menggunakan file application / config / autoload.php. Koneksi otomatis akan memuat database untuk setiap halaman. Kami hanya perlu menambahkan perpustakaan database seperti yang ditunjukkan di bawah ini -
$autoload['libraries'] = array(‘database’);
Manual Connecting- Jika Anda menginginkan konektivitas database hanya untuk beberapa halaman, maka kita dapat menggunakan koneksi manual. Kita dapat terhubung ke database secara manual dengan menambahkan baris berikut di kelas manapun.
$this->load->database();
Di sini, kami tidak memberikan argumen apa pun karena semuanya telah diatur dalam file konfigurasi database application / config / database.php
Memasukkan Record
Untuk memasukkan record ke database, fungsi insert () digunakan seperti yang ditunjukkan pada tabel berikut -
Syntax |
masukkan ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]]) |
Parameters |
|
Returns |
BENAR pada kesuksesan, SALAH pada kegagalan |
Return Type |
bool |
Contoh berikut menunjukkan cara menyisipkan record studmeja. $ Data adalah array di mana kita telah mengatur data dan memasukkan data ini ke tabelstud, Kita hanya perlu melewati array ini untuk fungsi insert dalam 2 nd argumen.
$data = array(
'roll_no' => ‘1’,
'name' => ‘Virat’
);
$this->db->insert("stud", $data);
Memperbarui Record
Untuk memperbarui record dalam database, file update() fungsi digunakan bersama set() dan where()fungsi seperti yang ditunjukkan pada tabel di bawah ini. Ituset() fungsi akan mengatur data yang akan diperbarui.
Syntax |
set ( $ key [, $ value = '' [, $ escape = NULL ]]) |
Parameters |
|
Returns |
CI_DB_query_builder instance (metode rantai) |
Return Type |
CI_DB_query_builder |
Itu where() fungsi akan memutuskan rekaman mana yang akan diperbarui.
Syntax |
di mana ( $ key [, $ value = NULL [, $ escape = NULL ]]) |
Parameters |
|
Returns |
Instance DB_query_builder |
Return Type |
obyek |
Terakhir, file update() fungsi akan mengupdate data di database.
Syntax |
perbarui ([ $ table = '' [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]]) |
Parameters |
|
Returns |
BENAR pada kesuksesan, SALAH pada kegagalan |
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);
Menghapus Record
Untuk menghapus record dalam database, fungsi delete () digunakan seperti yang ditunjukkan pada tabel berikut -
Syntax |
hapus ([ $ table = '' [, $ where = '' [, $ limit = NULL [, $ reset_data = TRUE ]]]]) |
Parameters |
|
Returns |
CI_DB_query_builder instance (method chaining) atau FALSE pada kegagalan |
Return Type |
Campuran |
Gunakan kode berikut untuk menghapus record di studmeja. Argumen pertama menunjukkan nama tabel untuk menghapus record dan argumen kedua memutuskan record mana yang akan dihapus.
$this->db->delete("stud", "roll_no = 1");
Memilih Record
Untuk memilih record dalam database, file get fungsi digunakan, seperti yang ditunjukkan pada tabel berikut -
Syntax |
dapatkan ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]]) |
Parameters |
|
Returns |
Instance CI_DB_result (rangkaian metode) |
Return Type |
CI_DB_result |
Gunakan kode berikut untuk mendapatkan semua catatan dari database. Pernyataan pertama mengambil semua record dari tabel "stud" dan mengembalikan objek, yang akan disimpan di $ query object. Pernyataan kedua menyebutresult() berfungsi dengan objek $ query untuk mendapatkan semua record sebagai array.
$query = $this->db->get("stud");
$data['records'] = $query->result();
Menutup Koneksi
Koneksi database dapat ditutup secara manual, dengan menjalankan kode berikut -
$this->db->close();
Contoh
Buat kelas pengontrol bernama Stud_controller.php dan simpan di application/controller/Stud_controller.php
Berikut adalah contoh lengkap, di mana semua operasi yang disebutkan di atas dilakukan. Sebelum menjalankan contoh berikut, buat database dan tabel seperti yang diinstruksikan di awal bab ini dan buat perubahan yang diperlukan dalam file konfigurasi database yang disimpan diapplication/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);
}
}
?>
Buat kelas model bernama Stud_Model.php dan simpan di 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);
}
}
?>
Buat file tampilan bernama Stud_add.php dan simpan di 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>
Buat file tampilan bernama Stud_edit.php dan simpan di 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>
Buat file tampilan bernama Stud_view.php dan simpan di 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>
Lakukan perubahan berikut pada file rute di application/config/routes.php dan tambahkan baris berikut di akhir file.
$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';
Sekarang, mari kita jalankan contoh ini dengan mengunjungi URL berikut di browser. Ganti yoursite.com dengan URL Anda.
http://yoursite.com/index.php/stud