Учебники

CodeIgniter — Работа с базой данных

Как и любой другой фреймворк, нам нужно очень часто взаимодействовать с базой данных, и 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 ]]])

параметры

  • $ table ( string ) — имя таблицы

  • $ set ( array ) — Ассоциативный массив пар поле / значение

  • $ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

ИСТИНА в случае успеха, ЛОЖЬ в случае неудачи

Тип возврата

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 ]])

параметры

  • $ key ( mixed ) — имя поля или массив пар поле / значение

  • $ value ( string ) — Значение поля, если $ key — одно поле

  • $ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

Экземпляр CI_DB_query_builder (цепочка методов)

Тип возврата

CI_DB_query_builder

Синтаксис

параметры

$ key ( mixed ) — имя поля или массив пар поле / значение

$ value ( string ) — Значение поля, если $ key — одно поле

$ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

Тип возврата

Функция where () решает, какую запись обновить.

Синтаксис

где ( $ key [, $ value = NULL [, $ escape = NULL ]])

параметры

  • $ key ( mixed ) — Имя поля для сравнения или ассоциативный массив

  • $ value ( mixed ) — если один ключ, по сравнению с этим значением

  • $ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

Экземпляр DB_query_builder

Тип возврата

объект

Синтаксис

параметры

$ key ( mixed ) — Имя поля для сравнения или ассоциативный массив

$ value ( mixed ) — если один ключ, по сравнению с этим значением

$ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

Тип возврата

Наконец, функция update () обновит данные в базе данных.

Синтаксис

обновление ([ $ table = » [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]])

параметры

  • $ table ( string ) — имя таблицы

  • $ set ( array ) — Ассоциативный массив пар поле / значение

  • $ where ( string ) — предложение WHERE

  • $ limit ( int ) — Предложение LIMIT

Возвращает

ИСТИНА в случае успеха, ЛОЖЬ в случае неудачи

Тип возврата

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 ]]]])

параметры

  • $ table ( mixed ) — Таблица (и) для удаления; строка или массив

  • $ where ( string ) — предложение WHERE

  • $ limit ( int ) — Предложение LIMIT

  • $ reset_data ( bool ) — TRUE для сброса предложения «write» запроса

Возвращает

Экземпляр 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 ]]])

параметры

  • $ table ( string ) — таблица для запроса к массиву

  • $ limit ( int ) — Предложение LIMIT

  • $ offset ( int ) — Предложение OFFSET

Возвращает

Экземпляр 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.