📅  最后修改于: 2020-10-26 05:29:52             🧑  作者: Mango
像任何其他框架一样,我们需要经常与数据库进行交互,而CodeIgniter使我们的工作变得容易。它提供了丰富的功能来与数据库交互。
在本节中,我们将了解CRUD(创建,读取,更新,删除)功能如何与CodeIgniter一起使用。我们将使用stud表选择,更新,删除数据并将其插入stud表。
Table Name: stud | |
---|---|
roll_no | int(11) |
name | varchar(30) |
我们可以通过以下两种方式连接到数据库-
自动连接-通过使用文件application / config / autoload.php可以完成自动连接。自动连接将为每个页面加载数据库。我们只需要添加数据库库,如下所示-
$autoload['libraries'] = array(‘database’);
手动连接-如果只需要某些页面的数据库连接,那么我们可以进行手动连接。我们可以通过在任何类中添加以下行来手动连接数据库。
$this->load->database();
在这里,我们没有传递任何参数,因为一切都在数据库配置文件application / config / database.php中设置
要在数据库中插入记录,请使用insert()函数,如下表所示:
Syntax |
insert([$table = ”[, $set = NULL[, $escape = NULL]]]) |
Parameters |
|
Returns |
TRUE on success, FALSE on failure |
Return Type |
bool |
下面的示例显示如何在stud表中插入记录。 $ data是一个数组,我们在其中设置了数据并将其插入表stud中,我们只需要将此数组传递给第二个参数中的insert函数。
$data = array(
'roll_no' => ‘1’,
'name' => ‘Virat’
);
$this->db->insert("stud", $data);
要更新数据库中的记录,如下表所示,将update()函数与set()和where()函数一起使用。 set()函数将设置要更新的数据。
Syntax |
set($key[, $value = ”[, $escape = NULL]]) |
Parameters |
|
Returns |
CI_DB_query_builder instance (method chaining) |
Return Type |
CI_DB_query_builder |
where()函数将决定要更新的记录。
Syntax |
where($key[, $value = NULL[, $escape = NULL]]) |
Parameters |
|
Returns |
DB_query_builder instance |
Return Type |
object |
最后, update()函数将更新数据库中的数据。
Syntax |
update([$table = ”[, $set = NULL[, $where = NULL[, $limit = NULL]]]]) |
Parameters |
|
Returns |
TRUE on success, FALSE on failure |
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);
要删除数据库中的记录,请使用delete()函数,如下表所示:
Syntax |
delete([$table = ”[, $where = ”[, $limit = NULL[, $reset_data = TRUE]]]]) |
Parameters |
|
Returns |
CI_DB_query_builder instance (method chaining) or FALSE on failure |
Return Type |
mixed |
使用下面的代码删除stud表中的记录。第一个参数指示要删除记录的表的名称,第二个参数决定要删除的记录。
$this->db->delete("stud", "roll_no = 1");
要选择数据库中的记录,请使用get函数,如下表所示-
Syntax |
get([$table = ”[, $limit = NULL[, $offset = NULL]]]) |
Parameters |
|
Returns |
CI_DB_result instance (method chaining) |
Return Type |
CI_DB_result |
使用以下代码从数据库获取所有记录。第一条语句从“ stud”表中获取所有记录并返回该对象,该对象将存储在$ query对象中。第二条语句使用$ query对象调用result()函数以获取所有记录作为数组。
$query = $this->db->get("stud");
$data['records'] = $query->result();
通过执行以下代码,可以手动关闭数据库连接-
$this->db->close();
创建一个名为Stud_controller.php的控制器类,并将其保存在application / controller / Stud_controller.php中
这是一个完整的示例,其中执行了所有上述操作。在执行以下示例之前,请按照本章开头的说明创建数据库和表,并对存储在application / config / database.php中的数据库配置文件进行必要的更改。
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);
}
}
?>
创建一个名为Stud_Model.php的模型类,并将其保存在application / models / Stud_Model.php中
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);
}
}
?>
创建一个名为Stud_add.php的视图文件,并将其保存在application / views / Stud_add.php中
Students Example
'roll_no','name'=>'roll_no'));
echo "
";
echo form_label('Name');
echo form_input(array('id'=>'name','name'=>'name'));
echo "
";
echo form_submit(array('id'=>'submit','value'=>'Add'));
echo form_close();
?>
创建一个名为Stud_edit.php的视图文件,并将其保存在application / views / Stud_edit.php中
Students Example
创建一个名为Stud_view.php的视图文件,并将其保存在application / views / Stud_view.php中
Students Example
Add
";
echo "Sr# ";
echo "Roll No. ";
echo "Name ";
echo "Edit ";
echo "Delete ";
echo "";
foreach($records as $r) {
echo " ";
echo "".$i++." ";
echo "".$r->roll_no." ";
echo "".$r->name." ";
echo "Edit ";
echo "Delete ";
echo " ";
}
?>
在application / config / routes.php的路由文件中进行以下更改,并在文件末尾添加以下行。
$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';
现在,让我们通过在浏览器中访问以下URL来执行此示例。将URL替换为yoursite.com。
http://yoursite.com/index.php/stud