CodeIgniter - Trabalhando com Banco de Dados

Como qualquer outra estrutura, precisamos interagir com o banco de dados com muita frequência e o CodeIgniter torna esse trabalho fácil para nós. Ele fornece um rico conjunto de funcionalidades para interagir com o banco de dados.

Nesta seção, entenderemos como as funções CRUD (Criar, Ler, Atualizar, Excluir) funcionam com o CodeIgniter. Nós vamos usarstud tabela para selecionar, atualizar, excluir e inserir os dados em stud tabela.

Nome da tabela: stud
Núm. da lista int (11)
nome varchar (30)

Conectando-se a um banco de dados

Podemos nos conectar ao banco de dados das duas maneiras a seguir -

  • Automatic Connecting- A conexão automática pode ser feita usando o arquivo application / config / autoload.php. A conexão automática carregará o banco de dados para cada página. Precisamos apenas adicionar a biblioteca de banco de dados conforme mostrado abaixo -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Se você deseja conectividade de banco de dados para apenas algumas das páginas, podemos ir para a conexão manual. Podemos nos conectar ao banco de dados manualmente, adicionando a seguinte linha em qualquer classe.

$this->load->database();

Aqui, não estamos passando nenhum argumento porque tudo está definido no arquivo de configuração do banco de dados application / config / database.php

Inserindo um Registro

Para inserir um registro no banco de dados, a função insert () é usada conforme mostrado na tabela a seguir -

Syntax

inserir ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]])

Parameters

  • $table( string ) - nome da tabela

  • $set( matriz ) - Uma matriz associativa de pares de campo / valor

  • $escape( bool ) - se deve escapar valores e identificadores

Returns

TRUE em caso de sucesso, FALSE em caso de falha

Return Type

bool

O exemplo a seguir mostra como inserir um registro em studtabela. O $ data é um array no qual definimos os dados e para inserir esses dados na tabelastud, só precisamos passar esse array para a função de inserção no argumento.

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

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

Atualizando um registro

Para atualizar um registro no banco de dados, o update() função é usada junto com set() e where()funções conforme mostrado nas tabelas abaixo. oset() função irá definir os dados a serem atualizados.

Syntax

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

Parameters

  • $key( misto ) - nome do campo ou uma matriz de pares de campo / valor

  • $value( string ) - valor do campo, se $ key for um único campo

  • $escape( bool ) - se deve escapar valores e identificadores

Returns

Instância CI_DB_query_builder (encadeamento de método)

Return Type

CI_DB_query_builder

o where() função irá decidir qual registro atualizar.

Syntax

onde ( $ key [, $ value = NULL [, $ escape = NULL ]])

Parameters

  • $key( misto ) - nome do campo a comparar ou matriz associativa

  • $value( misto ) - se for uma única chave, em comparação com este valor

  • $escape( bool ) - se deve escapar valores e identificadores

Returns

Instância DB_query_builder

Return Type

objeto

finalmente, o update() função irá atualizar os dados no banco de dados.

Syntax

atualização ([ $ table = '' [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]])

Parameters

  • $table( string ) - nome da tabela

  • $set( matriz ) - Uma matriz associativa de pares de campo / valor

  • $where( string ) - A cláusula WHERE

  • $limit( int ) - A cláusula LIMIT

Returns

TRUE em caso de sucesso, FALSE em caso de falha

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);

Excluindo um Registro

Para excluir um registro no banco de dados, a função delete () é usada conforme mostrado na tabela a seguir -

Syntax

excluir ([ $ table = '' [, $ where = '' [, $ limit = NULL [, $ reset_data = TRUE ]]]])

Parameters

  • $table( misto ) - A (s) tabela (s) a ser excluída (s); string ou array

  • $where( string ) - A cláusula WHERE

  • $limit( int ) - A cláusula LIMIT

  • $reset_data( bool ) - TRUE para redefinir a cláusula de "gravação" da consulta

Returns

Instância CI_DB_query_builder (encadeamento de método) ou FALSE em caso de falha

Return Type

misturado

Use o seguinte código para excluir um registro no studtabela. O primeiro argumento indica o nome da tabela a ser excluída do registro e o segundo argumento decide qual registro excluir.

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

Selecionando um Registro

Para selecionar um registro no banco de dados, o get função é usada, conforme mostrado na tabela a seguir -

Syntax

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

Parameters

  • $table( string ) - A tabela para consultar a matriz

  • $limit( int ) - A cláusula LIMIT

  • $offset( int ) - A cláusula OFFSET

Returns

Instância CI_DB_result (encadeamento de método)

Return Type

CI_DB_result

Use o código a seguir para obter todos os registros do banco de dados. A primeira instrução busca todos os registros da tabela “stud” e retorna o objeto, que será armazenado em $ query object. A segunda declaração chama oresult() função com o objeto $ query para obter todos os registros como array.

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

Fechando uma conexão

A conexão com o banco de dados pode ser fechada manualmente, executando o seguinte código -

$this->db->close();

Exemplo

Crie uma classe de controlador chamada Stud_controller.php e salve em application/controller/Stud_controller.php

Aqui está um exemplo completo, em que todas as operações mencionadas acima são realizadas. Antes de executar o exemplo a seguir, crie um banco de dados e uma tabela conforme as instruções no início deste capítulo e faça as alterações necessárias no arquivo de configuração do banco de dados armazenado emapplication/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); 
      } 
   } 
?>

Crie uma classe de modelo chamada Stud_Model.php e salve em 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); 
      } 
   } 
?>

Crie um arquivo de visualização chamado Stud_add.php e salve em 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>

Crie um arquivo de visualização chamado Stud_edit.php e salve em 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>

Crie um arquivo de visualização chamado Stud_view.php e salve em 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>

Faça a seguinte alteração no arquivo de rota em application/config/routes.php e adicione a seguinte linha no final do arquivo.

$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';

Agora, vamos executar este exemplo visitando a seguinte URL no navegador. Substitua o yoursite.com pelo seu URL.

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