Как и любой другой фреймворк, нам нужно очень часто взаимодействовать с базой данных, и CodeIgniter облегчает нам эту работу. Он предоставляет богатый набор функций для взаимодействия с базой данных.
В этом разделе мы поймем, как функции CRUD (создание, чтение, обновление, удаление) работают с CodeIgniter. Мы будем использовать таблицу исследований для выбора, обновления, удаления и вставки данных в таблицу исследований.
Название стола: шпилька | |
---|---|
roll_no | INT (11) |
название | VARCHAR (30) |
Подключение к базе данных
Мы можем подключиться к базе данных двумя способами:
-
Автоматическое подключение. Автоматическое подключение можно выполнить с помощью файла application / config / autoload.php. Автоматическое подключение загрузит базу данных для каждой страницы. Нам просто нужно добавить библиотеку базы данных, как показано ниже —
Автоматическое подключение. Автоматическое подключение можно выполнить с помощью файла application / config / autoload.php. Автоматическое подключение загрузит базу данных для каждой страницы. Нам просто нужно добавить библиотеку базы данных, как показано ниже —
$autoload['libraries'] = array(‘database’);
-
Подключение вручную — если вы хотите подключиться к базе данных только для некоторых страниц, тогда мы можем перейти к подключению вручную. Мы можем подключиться к базе данных вручную, добавив следующую строку в любом классе.
Подключение вручную — если вы хотите подключиться к базе данных только для некоторых страниц, тогда мы можем перейти к подключению вручную. Мы можем подключиться к базе данных вручную, добавив следующую строку в любом классе.
$this->load->database();
Здесь мы не передаем никаких аргументов, потому что все установлено в файле конфигурации базы данных application / config / database.php
Вставка записи
Чтобы вставить запись в базу данных, используется функция insert (), как показано в следующей таблице:
Синтаксис |
вставить ([ $ table = » [, $ set = NULL [, $ escape = NULL ]]]) |
параметры |
|
Возвращает |
ИСТИНА в случае успеха, ЛОЖЬ в случае неудачи |
Тип возврата |
BOOL |
Синтаксис
параметры
$ table ( string ) — имя таблицы
$ set ( array ) — Ассоциативный массив пар поле / значение
$ escape ( bool ) — экранировать ли значения и идентификаторы
Возвращает
Тип возврата
В следующем примере показано, как вставить запись в таблицу стад . $ Data — это массив, в котором мы установили данные, и чтобы вставить эти данные в стержень таблицы, нам просто нужно передать этот массив функции вставки во втором аргументе.
$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->insert("stud", $data);
Обновление записи
Для обновления записи в базе данных используется функция update () вместе с функциями set () и where (), как показано в таблицах ниже. Функция set () установит данные для обновления.
Синтаксис |
set ( $ key [, $ value = » [, $ escape = NULL ]]) |
параметры |
|
Возвращает |
Экземпляр CI_DB_query_builder (цепочка методов) |
Тип возврата |
CI_DB_query_builder |
Синтаксис
параметры
$ key ( mixed ) — имя поля или массив пар поле / значение
$ value ( string ) — Значение поля, если $ key — одно поле
$ escape ( bool ) — экранировать ли значения и идентификаторы
Возвращает
Тип возврата
Функция where () решает, какую запись обновить.
Синтаксис |
где ( $ key [, $ value = NULL [, $ escape = NULL ]]) |
параметры |
|
Возвращает |
Экземпляр DB_query_builder |
Тип возврата |
объект |
Синтаксис
параметры
$ key ( mixed ) — Имя поля для сравнения или ассоциативный массив
$ value ( mixed ) — если один ключ, по сравнению с этим значением
$ escape ( bool ) — экранировать ли значения и идентификаторы
Возвращает
Тип возврата
Наконец, функция update () обновит данные в базе данных.
Синтаксис |
обновление ([ $ table = » [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]]) |
параметры |
|
Возвращает |
ИСТИНА в случае успеха, ЛОЖЬ в случае неудачи |
Тип возврата |
BOOL |
Синтаксис
параметры
$ table ( string ) — имя таблицы
$ set ( array ) — Ассоциативный массив пар поле / значение
$ where ( string ) — предложение WHERE
$ limit ( int ) — Предложение LIMIT
Возвращает
Тип возврата
$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->set($data); $this->db->where("roll_no", ‘1’); $this->db->update("stud", $data);
Удаление записи
Чтобы удалить запись в базе данных, используется функция delete (), как показано в следующей таблице:
Синтаксис |
delete ([ $ table = » [, $ where = » [, $ limit = NULL [, $ reset_data = TRUE ]]]]) |
параметры |
|
Возвращает |
Экземпляр CI_DB_query_builder (объединение методов) или FALSE при ошибке |
Тип возврата |
смешанный |
Синтаксис
параметры
$ table ( mixed ) — Таблица (и) для удаления; строка или массив
$ where ( string ) — предложение WHERE
$ limit ( int ) — Предложение LIMIT
$ reset_data ( bool ) — TRUE для сброса предложения «write» запроса
Возвращает
Тип возврата
Используйте следующий код, чтобы удалить запись в таблице стад . Первый аргумент указывает имя таблицы для удаления записи, а второй аргумент решает, какую запись удалить.
$this->db->delete("stud", "roll_no = 1");
Выбор записи
Для выбора записи в базе данных используется функция get , как показано в следующей таблице:
Синтаксис |
get ([ $ table = » [, $ limit = NULL [, $ offset = NULL ]]]) |
параметры |
|
Возвращает |
Экземпляр CI_DB_result (объединение методов) |
Тип возврата |
CI_DB_result |
Синтаксис
параметры
$ table ( string ) — таблица для запроса к массиву
$ limit ( int ) — Предложение LIMIT
$ offset ( int ) — Предложение OFFSET
Возвращает
Тип возврата
Используйте следующий код, чтобы получить все записи из базы данных. Первый оператор выбирает все записи из таблицы «stud» и возвращает объект, который будет сохранен в объекте $ query. Второй оператор вызывает функцию 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 / rout.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.