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 |
|
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 |
|
Returns |
CI_DB_query_builderインスタンス(メソッドチェーン) |
Return Type |
CI_DB_query_builder |
ザ・ where() 関数は、更新するレコードを決定します。
Syntax |
where($ key [、$ value = NULL [、$ escape = NULL ]]) |
Parameters |
|
Returns |
DB_query_builderインスタンス |
Return Type |
オブジェクト |
最後に、 update() 関数はデータベース内のデータを更新します。
Syntax |
update([ $ table = '' [、$ set = NULL [、$ where = NULL [、$ limit = NULL ]]]]) |
Parameters |
|
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 |
|
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 |
|
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