无涯教程-CodeIgniter - 数据库操作

时间:2024-01-22 12:34:43

像任何其他框架一样,无涯教程需要经常与数据库进行交互,而CodeIgniter使工作变得容易。它提供了丰富的函数来与数据库交互。

在本节中将了解CRUD(创建,读取,更新,删除)函数如何与CodeIgniter一起使用。将选择,更新,删除,插入数据到 learnfk 表中。

连接数据库

无涯教程可以通过以下两种方式连接到数据库-

  • Automatic Connecting(自动连接)   - 可以使用文件application/config/autoload.php进行自动连接,如下所示-

$autoload['libraries']=array(‘database');
  • Manual Connecting (手动连接)       -  如果只需要某些页面的数据库连接,那么可以进行手动连接。

$this->load->database();

在这里,没有传递任何参数,因为一切都在数据库配置文件application/config/database.php中设置

插入数据

要在数据库中插入记录,请使用insert()函数。

下面的演示如何在 learnfk 表中插入记录。 $data是一个数组,在其中设置了数据并将其插入到表 learnfk 中

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

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

更新数据

要更新数据库中的记录,请使用 update()函数以及 set()where()函数。 set()函数将设置要更新的数据。

where()过滤函数将决定要更新的记录。

最后, update()函数将更新数据库中的数据。

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

$this->db->set($data); 
$this->db->where("roll_no", 1'); 
$this->db->update("learnfk", $data);

删除数据

要删除数据库中的记录,请使用delete()函数。

使用以下代码删除 learnfk 表中的记录。第一个参数指示要删除记录的表的名称,第二个参数决定要删除的记录。

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

查询数据

要选择数据库中的记录,请使用 get 函数,如下表所示-

使用以下代码从数据库获取所有记录。第一条语句从" learnfk"表中获取所有记录并返回该对象,该对象将存储在$query对象中。第二条语句使用$query对象调用 result()函数,以获取所有记录作为数组。

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

关闭数据库

通过执行以下代码,可以手动关闭数据库连接-

$this->db->close(); 

CURD 示例

创建一个名为 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("learnfk"); 
         $data['records']=$query->result(); 
			
         $this->load->helper('url'); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function add_learnfkent_view() { 
         $this->load->helper('form'); 
         $this->load->view('Stud_add'); 
      } 
  
      public function add_learnfkent() { 
         $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("learnfk"); 
         $data['records']=$query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function update_learnfkent_view() { 
         $this->load->helper('form'); 
         $roll_no=$this->uri->segment('3'); 
         $query=$this->db->get_where("learnfk",array("roll_no"=>$roll_no));
         $data['records']=$query->result(); 
         $data['old_roll_no']=$roll_no; 
         $this->load->view('Stud_edit',$data); 
      } 
  
      public function update_learnfkent(){ 
         $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("learnfk"); 
         $data['records']=$query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function delete_learnfkent() { 
         $this->load->model('Stud_Model'); 
         $roll_no=$this->uri->segment('3'); 
         $this->Stud_Model->delete($roll_no); 
   
         $query=$this->db->get("learnfk"); 
         $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("learnfk", $data)) { 
            return true; 
         } 
      } 
   
      public function delete($roll_no) { 
         if ($this->db->delete("learnfk", "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("learnfk", $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_learnfkent');
            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_learnfkent'); 
            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/learnfk/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/learnfk/edit/"
                  .$r->roll_no."'>Edit</a></td>"; 
               echo "<td><a href='".base_url()."index.php/learnfk/delete/"
                  .$r->roll_no."'>Delete</a></td>"; 
               echo "<tr>"; 
            } 
         ?>
      </table> 
		
   </body>
	
</html>

在 application/config/routes.php 的路由文件中进行以下更改,并在文件末尾添加以下行。

$route['learnfk']="Stud_controller"; 
$route['learnfk/add']='Stud_controller/add_learnfkent'; 
$route['learnfk/add_view']='Stud_controller/add_learnfkent_view'; 
$route['learnfk/edit/(\d+)']='Stud_controller/update_learnfkent_view/$1'; 
$route['learnfk/delete/(\d+)']='Stud_controller/delete_learnfkent/$1';

现在,让无涯教程通过在浏览器中访问以下URL来执行此示例。将URL替换为yoursite.com。

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

参考链接

https://www.learnfk.com/codeigniter/working-with-database.html