CodeIgniter使用数据库 CodeIgniter配置 CodeIgniter库 像任何其他框架一样,我们需要经常与数据库进行交互,CodeIgniter使我们的工作变得轻松。它提供了丰富的功能来与数据库交互。 在本节中,我们将了解CRUD(创建,读取,更新,删除)功能如何与CodeIgniter配合使用。我们将使用 stud 表来选择,更新,删除和插入 stud 表中的数据。 表名: stud roll_no int(11) Name varchar(30) 连接到数据库 我们可以通过以下两种方式连接到数据库 - 自动连接 - 可以使用文件application / config / autoload.php完成自动连接。 自动连接将为每个页面加载数据库。我们只需要添加数据库库如下所示 - $autoload['libraries'] = array(‘database’); 手动连接 - 如果您只需要某些页面的数据库连接,那么我们可以手动连接。 我们可以通过在任何类中添加以下行来手动连接到数据库。 $this->load->database(); 在这里,我们没有传递任何参数,因为所有内容都在数据库配置文件application / config / database.php中设置 插入一条记录 要在数据库中插入记录,使用insert()函数,如下表所示 句法 insert([ _$ table =''_ [, _$ set = NULL_ [, _$ escape = NULL_ ]]]) 参数 $ table ( string ) - 表名 $ set ( array ) - 一个字段/值对的关联数组 $ escape ( bool ) - 是否转义值和标识符 返回 成功为TRUE,失败为FALSE 返回类型 布尔 以下示例显示如何在 stud 表中插入记录。该$ DATA是在我们设定的数据,并插入此数据表中的数组 stud ,我们只需要这个数组传递给插入功能在2 次的说法。 $data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->insert("stud", $data); 更新记录 要更新数据库中的记录, update() 函数与 set() 和 where() 函数一起使用,如下表所示。该 set() 函数将设置数据进行更新。 句法 set( _$ key_ [, _$ value =''_ [, _$ escape = NULL_ ]]) 参数 $ key ( mixed ) - 字段名称或字段/值对的数组 $ value ( 字符串 ) - 字段值,如果$ key是单个字段 $ escape ( bool ) - 是否转义值和标识符 返回 CI_DB_query_builder实例(方法链) 返回类型 CI_DB_query_builder 在 where() 函数将决定要更新的记录。 句法 其中( _$ key_ [, _$ value = NULL_ [, _$ escape = NULL_ ]]) 参数 $ key ( mixed ) - 要比较的字段的名称或关联数组 $ value ( 混合 ) - 如果单个键与此值相比较 $ escape ( bool ) - 是否转义值和标识符 返回 DB_query_builder实例 返回类型 目的 最后, update() 函数将更新数据库中的数据。 句法 update([ _$ table =''_ [, _$ set = NULL_ [, _$ where = NULL [,$ limit = NULL_ ]]]]) 参数 $ table ( string ) - 表名 $ set ( array ) - 一个字段/值对的关联数组 $ where ( string ) - WHERE子句 $ limit ( int ) - LIMIT子句 返回 成功为TRUE,失败为FALSE 返回类型 布尔 $data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->set($data); $this->db->where("roll_no", ‘1’); $this->db->update("stud", $data); 删除记录 要删除数据库中的记录,使用delete()函数,如下表所示 句法 删除([ _$ table =''_ [, _$ where =''_ [, _$ limit = NULL [,$ reset_data = TRUE_ ]]]]) 参数 $ table ( mixed ) - 从中删除的表格; 字符串或数组 $ where ( string ) - WHERE子句 $ limit ( int ) - LIMIT子句 $ reset_data ( bool ) - TRUE重置查询“写入”子句 返回 CI_DB_query_builder实例(方法链)或失败时为FALSE 返回类型 杂 使用以下代码删除 stud 表中的记录。第一个参数表示要删除记录的表的名称,第二个参数决定要删除的记录。 $this->db->delete("stud", "roll_no = 1"); 选择一个记录 要在数据库中选择记录,使用 get 函数,如下表所示 句法 get([ _$ table =''_ [, _$ limit = NULL_ [, _$ offset = NULL_ ]]]) 参数 $ table ( string ) - 查询数组的表 $ limit ( int ) - LIMIT子句 $ offset ( int ) - OFFSET子句 返回 CI_DB_result实例(方法链接) 返回类型 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 中的数据库配置文件进行必要的更改 <? 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); } } ?> 创建一个名为 Stud_Model.php 的模型类,并将其保存在 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); } } ?> 创建一个名为 Stud_add.php 的视图文件并将其保存在 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> 创建一个名为 Stud_edit.php 的视图文件并将其保存在 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> 创建一个名为 Stud_view.php 的视图文件并将其保存在 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> 在 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来执行此示例。将yoursite.com替换为您的网址。 http://yoursite.com/index.php/stud CodeIgniter配置 CodeIgniter库