CodeIgniter - Trabajar con base de datos
Como cualquier otro marco, necesitamos interactuar con la base de datos con mucha frecuencia y CodeIgniter nos facilita este trabajo. Proporciona un amplio conjunto de funcionalidades para interactuar con la base de datos.
En esta sección, entenderemos cómo funcionan las funciones CRUD (Crear, Leer, Actualizar, Eliminar) con CodeIgniter. Usaremosstud tabla para seleccionar, actualizar, eliminar e insertar los datos en stud mesa.
Nombre de la tabla: perno prisionero | |
---|---|
roll_no | int (11) |
nombre | varchar (30) |
Conectarse a una base de datos
Podemos conectarnos a la base de datos de las siguientes dos formas:
Automatic Connecting- La conexión automática se puede realizar utilizando el archivo application / config / autoload.php. La conexión automática cargará la base de datos para todas y cada una de las páginas. Solo necesitamos agregar la biblioteca de la base de datos como se muestra a continuación:
$autoload['libraries'] = array(‘database’);
Manual Connecting- Si desea conectividad de base de datos solo para algunas de las páginas, podemos optar por la conexión manual. Podemos conectarnos a la base de datos manualmente agregando la siguiente línea en cualquier clase.
$this->load->database();
Aquí, no estamos pasando ningún argumento porque todo está configurado en el archivo de configuración de la base de datos application / config / database.php
Insertar un registro
Para insertar un registro en la base de datos, se utiliza la función insert () como se muestra en la siguiente tabla:
Syntax |
insert ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]]) |
Parameters |
|
Returns |
VERDADERO en caso de éxito, FALSO en caso de fracaso |
Return Type |
bool |
El siguiente ejemplo muestra cómo insertar un registro en studmesa. $ Data es una matriz en la que hemos establecido los datos y para insertar estos datos en la tablastud, Sólo tenemos que pasar esta matriz a la función de inserción en el 2 nd argumento.
$data = array(
'roll_no' => ‘1’,
'name' => ‘Virat’
);
$this->db->insert("stud", $data);
Actualizar un registro
Para actualizar un registro en la base de datos, el update() La función se usa junto con set() y where()funciona como se muestra en las tablas siguientes. losset() La función configurará los datos que se actualizarán.
Syntax |
set ( $ clave [, $ valor = '' [, $ escape = NULL ]]) |
Parameters |
|
Returns |
Instancia de CI_DB_query_builder (encadenamiento de métodos) |
Return Type |
CI_DB_query_builder |
los where() La función decidirá qué registro actualizar.
Syntax |
donde ( $ clave [, $ valor = NULL [, $ escape = NULL ]]) |
Parameters |
|
Returns |
Instancia de DB_query_builder |
Return Type |
objeto |
Finalmente, el update() La función actualizará los datos en la base de datos.
Syntax |
actualizar ([ $ tabla = '' [, $ conjunto = NULO [, $ donde = NULO [, $ límite = NULO ]]]]) |
Parameters |
|
Returns |
VERDADERO en caso de éxito, FALSO en caso de fracaso |
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);
Eliminar un registro
Para eliminar un registro en la base de datos, la función delete () se usa como se muestra en la siguiente tabla:
Syntax |
eliminar ([ $ tabla = '' [, $ donde = '' [, $ límite = NULL [, $ reset_data = TRUE ]]]]) |
Parameters |
|
Returns |
Instancia CI_DB_query_builder (encadenamiento de métodos) o FALSE en caso de falla |
Return Type |
mezclado |
Utilice el siguiente código para eliminar un registro en el studmesa. El primer argumento indica el nombre de la tabla para eliminar el registro y el segundo argumento decide qué registro eliminar.
$this->db->delete("stud", "roll_no = 1");
Seleccionar un registro
Para seleccionar un registro en la base de datos, el get se utiliza la función, como se muestra en la siguiente tabla:
Syntax |
get ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]]) |
Parameters |
|
Returns |
Instancia CI_DB_result (encadenamiento de métodos) |
Return Type |
CI_DB_result |
Utilice el siguiente código para obtener todos los registros de la base de datos. La primera instrucción obtiene todos los registros de la tabla "stud" y devuelve el objeto, que se almacenará en $ query object. La segunda declaración llama alresult() función con $ query object para obtener todos los registros como matriz.
$query = $this->db->get("stud");
$data['records'] = $query->result();
Cerrar una conexión
La conexión a la base de datos se puede cerrar manualmente, ejecutando el siguiente código:
$this->db->close();
Ejemplo
Crea una clase de controlador llamada Stud_controller.php y guárdalo en application/controller/Stud_controller.php
Aquí hay un ejemplo completo, en el que se realizan todas las operaciones mencionadas anteriormente. Antes de ejecutar el siguiente ejemplo, cree una base de datos y una tabla como se indica al comienzo de este capítulo y realice los cambios necesarios en el archivo de configuración de la base de datos almacenado enapplication/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);
}
}
?>
Crea una clase modelo llamada Stud_Model.php y guárdalo en 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);
}
}
?>
Crea un archivo de vista llamado Stud_add.php y guárdalo en 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>
Crea un archivo de vista llamado Stud_edit.php y guárdalo en 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>
Crea un archivo de vista llamado Stud_view.php y guárdalo en 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>
Realice el siguiente cambio en el archivo de ruta en application/config/routes.php y agregue la siguiente línea al final del archivo.
$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';
Ahora, ejecutemos este ejemplo visitando la siguiente URL en el navegador. Reemplace el yoursite.com con su URL.
http://yoursite.com/index.php/stud