CodeIgniter - Lavorare con il database
Come ogni altro framework, dobbiamo interagire molto spesso con il database e CodeIgniter ci rende questo lavoro facile. Fornisce un ricco set di funzionalità per interagire con il database.
In questa sezione, capiremo come funzionano le funzioni CRUD (Crea, Leggi, Aggiorna, Elimina) con CodeIgniter. Noi useremostud tabella per selezionare, aggiornare, eliminare e inserire i dati in stud tavolo.
Nome tabella: stud | |
---|---|
roll_no | int (11) |
nome | varchar (30) |
Connessione a un database
Possiamo connetterci al database nei due modi seguenti:
Automatic Connecting- La connessione automatica può essere eseguita utilizzando il file application / config / autoload.php. La connessione automatica caricherà il database per ogni pagina. Dobbiamo solo aggiungere la libreria del database come mostrato di seguito -
$autoload['libraries'] = array(‘database’);
Manual Connecting- Se desideri la connettività al database solo per alcune pagine, possiamo optare per la connessione manuale. Possiamo connetterci al database manualmente aggiungendo la seguente riga in qualsiasi classe.
$this->load->database();
Qui, non stiamo passando alcun argomento perché tutto è impostato nel file di configurazione del database application / config / database.php
Inserimento di un record
Per inserire un record nel database, viene utilizzata la funzione insert () come mostrato nella tabella seguente:
Syntax |
inserire ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]]) |
Parameters |
|
Returns |
VERO in caso di successo, FALSO in caso di fallimento |
Return Type |
bool |
L'esempio seguente mostra come inserire un record in studtavolo. $ Data è un array in cui abbiamo impostato i dati e per inserire questi dati nella tabellastud, dobbiamo solo passare questo array alla funzione di inserimento nel 2 ° argomento.
$data = array(
'roll_no' => ‘1’,
'name' => ‘Virat’
);
$this->db->insert("stud", $data);
Aggiornamento di un record
Per aggiornare un record nel database, il update() funzione viene utilizzata insieme a set() e where()funzioni come mostrato nelle tabelle seguenti. Ilset() la funzione imposterà i dati da aggiornare.
Syntax |
set ( $ key [, $ value = '' [, $ escape = NULL ]]) |
Parameters |
|
Returns |
Istanza CI_DB_query_builder (concatenamento di metodi) |
Return Type |
CI_DB_query_builder |
Il where() la funzione deciderà quale record aggiornare.
Syntax |
dove ( $ key [, $ value = NULL [, $ escape = NULL ]]) |
Parameters |
|
Returns |
Istanza DB_query_builder |
Return Type |
oggetto |
Infine, il update() la funzione aggiornerà i dati nel database.
Syntax |
aggiornamento ([ $ table = '' [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]]) |
Parameters |
|
Returns |
VERO in caso di successo, FALSO in caso di fallimento |
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);
Eliminazione di un record
Per eliminare un record nel database, viene utilizzata la funzione delete () come mostrato nella tabella seguente:
Syntax |
elimina ([ $ table = '' [, $ where = '' [, $ limit = NULL [, $ reset_data = TRUE ]]]]) |
Parameters |
|
Returns |
Istanza CI_DB_query_builder (concatenamento di metodi) o FALSE in caso di errore |
Return Type |
misto |
Utilizzare il codice seguente per eliminare un record in studtavolo. Il primo argomento indica il nome della tabella da eliminare record e il secondo argomento decide quale record eliminare.
$this->db->delete("stud", "roll_no = 1");
Selezione di un record
Per selezionare un record nel database, il get viene utilizzata la funzione, come mostrato nella tabella seguente:
Syntax |
get ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]]) |
Parameters |
|
Returns |
Istanza CI_DB_result (concatenamento di metodi) |
Return Type |
CI_DB_result |
Usa il codice seguente per ottenere tutti i record dal database. La prima istruzione recupera tutti i record dalla tabella "stud" e restituisce l'oggetto, che verrà archiviato in $ query object. La seconda istruzione chiama il fileresult() funzione con $ oggetto query per ottenere tutti i record come array.
$query = $this->db->get("stud");
$data['records'] = $query->result();
Chiusura di una connessione
La connessione al database può essere chiusa manualmente, eseguendo il codice seguente:
$this->db->close();
Esempio
Crea una classe controller chiamata Stud_controller.php e salvalo in application/controller/Stud_controller.php
Ecco un esempio completo, in cui vengono eseguite tutte le operazioni sopra menzionate. Prima di eseguire il seguente esempio, creare un database e una tabella come indicato all'inizio di questo capitolo e apportare le modifiche necessarie nel file di configurazione del database memorizzato inapplication/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 classe modello chiamata Stud_Model.php e salvalo in 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 file di visualizzazione chiamato Stud_add.php e salvalo in 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 file di visualizzazione chiamato Stud_edit.php e salvalo in 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 file di visualizzazione chiamato Stud_view.php e salvalo in 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>
Apporta la seguente modifica al file di rotta in application/config/routes.php e aggiungi la seguente riga alla fine del file.
$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';
Ora, eseguiamo questo esempio visitando il seguente URL nel browser. Sostituisci yoursite.com con il tuo URL.
http://yoursite.com/index.php/stud