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 |
|
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 2º 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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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