CodeIgniter-データベースの操作

他のフレームワークと同様に、データベースと頻繁にやり取りする必要があり、CodeIgniterを使用するとこの作業が簡単になります。データベースと対話するための豊富な機能セットを提供します。

このセクションでは、CRUD(作成、読み取り、更新、削除)関数がCodeIgniterでどのように機能するかを理解します。我々は使用するだろうstud データを選択、更新、削除、および挿入するテーブル stud テーブル。

テーブル名:スタッド
roll_no int(11)
名前 varchar(30)

データベースへの接続

次の2つの方法でデータベースに接続できます-

  • Automatic Connecting−自動接続は、application / config /autoload.phpファイルを使用して実行できます。自動接続は、すべてのページのデータベースをロードします。以下に示すように、データベースライブラリを追加する必要があります-

$autoload['libraries'] = array(‘database’);
  • Manual Connecting−一部のページのみにデータベース接続が必要な場合は、手動接続を利用できます。任意のクラスに次の行を追加することで、データベースに手動で接続できます。

$this->load->database();

ここでは、すべてがデータベース構成ファイルapplication / config / database.phpに設定されているため、引数を渡していません。

レコードの挿入

データベースにレコードを挿入するには、次の表に示すように、insert()関数を使用します。

Syntax

insert([ $ table = '' [、$ set = NULL [、$ escape = NULL ]]])

Parameters

  • $table文字列)-テーブル名

  • $set配列)-フィールド/値のペアの連想配列

  • $escapebool)-値と識別子をエスケープするかどうか

Returns

成功した場合はTRUE、失敗した場合はFALSE

Return Type

ブール

次の例は、にレコードを挿入する方法を示しています。 studテーブル。$ dataは、データを設定し、このデータをテーブルに挿入する配列です。stud、この配列を2番目の引数の挿入関数に渡す必要があります。

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

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

レコードの更新

データベースのレコードを更新するには、 update() 関数は一緒に使用されます set() そして where()以下の表に示すように機能します。ザ・set() 関数は、更新するデータを設定します。

Syntax

set($ key [、$ value = '' [、$ escape = NULL ]])

Parameters

  • $key混合)-フィールド名、またはフィールドと値のペアの配列

  • $value文字列)-$ keyが単一のフィールドの場合、フィールド値

  • $escapebool)-値と識別子をエスケープするかどうか

Returns

CI_DB_query_builderインスタンス(メソッドチェーン)

Return Type

CI_DB_query_builder

ザ・ where() 関数は、更新するレコードを決定します。

Syntax

where($ key [、$ value = NULL [、$ escape = NULL ]])

Parameters

  • $key混合)-比較するフィールドの名前、または連想配列

  • $value混合)-この値と比較して、単一のキーの場合

  • $escapebool)-値と識別子をエスケープするかどうか

Returns

DB_query_builderインスタンス

Return Type

オブジェクト

最後に、 update() 関数はデータベース内のデータを更新します。

Syntax

update([ $ table = '' [、$ set = NULL [、$ where = NULL [、$ limit = NULL ]]]])

Parameters

  • $table文字列)-テーブル名

  • $set配列)-フィールド/値のペアの連想配列

  • $where文字列)-WHERE句

  • $limitint)-LIMIT句

Returns

成功した場合はTRUE、失敗した場合はFALSE

Return Type

ブール
$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

  • $table混合)-削除するテーブル; 文字列または配列

  • $where文字列)-WHERE句

  • $limitint)-LIMIT句

  • $reset_databool)-クエリの「書き込み」句をリセットするにはTRUE

Returns

CI_DB_query_builderインスタンス(メソッドチェーン)または失敗した場合はFALSE

Return Type

混合

次のコードを使用して、のレコードを削除します studテーブル。最初の引数はレコードを削除するテーブルの名前を示し、2番目の引数は削除するレコードを決定します。

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

レコードの選択

データベース内のレコードを選択するには、 get 次の表に示すように、関数が使用されます-

Syntax

get([ $ table = '' [、$ limit = NULL [、$ offset = NULL ]]])

Parameters

  • $table文字列)-配列をクエリするテーブル

  • $limitint)-LIMIT句

  • $offsetint)-OFFSET句

Returns

CI_DB_resultインスタンス(メソッドチェーン)

Return Type

CI_DB_result

次のコードを使用して、データベースからすべてのレコードを取得します。最初のステートメントは、「スタッド」テーブルからすべてのレコードをフェッチし、オブジェクトを返します。このオブジェクトは、$ queryオブジェクトに格納されます。2番目のステートメントはresult() $ queryオブジェクトを使用して関数を実行し、すべてのレコードを配列として取得します。

$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をURLに置き換えます。

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