Начальная информация, примеры использования

 

Данная страница содержит примеры использования класса Database. Полное описание функциональности содержится в отдельных страницах данного руководства.

Инициализация класса Database

Следующий код инициализирует класс Database на основе настроек конфигурации:

  1. $this->load->database();

После инициализации вы можете использовать класс как показано ниже.
Примечание: если все ваши страницы требуют подключения к базе данных, вы можете настроить автоматическое подключение.

Стандартный запрос с несколькими записями (объектная версия)

  1. $query = $this->db->query('SELECT name, title, email FROM my_table');
  2.  
  3. foreach ($query->result() as $row)
  4. {
  5. echo $row->title;
  6. echo $row->name;
  7. echo $row->email;
  8. }
  9.  
  10. echo 'Total Results: ' . $query->num_rows();

В коде выше функция result() вернет массив объектов. Пример: $row->title

Стандартный запрос с несколькими записями (версия с использованием массива)

  1. $query = $this->db->query('SELECT name, title, email FROM my_table');
  2.  
  3. foreach ($query->result_array() as $row)
  4. {
  5. echo $row['title'];
  6. echo $row['name'];
  7. echo $row['email'];
  8. }

В приведенном выше коде функция result_array() вернет массив записей с названиями полей в качестве индексов. Пример: $row['title']

Проверка на наличие результата

Если в результате вашего запроса может не быть результатов, рекомендуется использовать функцию num_rows() для проверки:

  1. $query = $this->db->query("YOUR QUERY");
  2.  
  3. if ($query->num_rows() > 0)
  4. {
  5. foreach ($query->result() as $row)
  6. {
  7. echo $row->title;
  8. echo $row->name;
  9. echo $row->body;
  10. }
  11. }

Стандартный запрос с единственной записью

  1. $query = $this->db->query('SELECT name FROM my_table LIMIT 1');
  2.  
  3. $row = $query->row();
  4. echo $row->name;

Функция row() возвращает объект. Пример: $row->name

Стандартный запрос с единственной записью (версия с использованием массива)

  1. $query = $this->db->query('SELECT name FROM my_table LIMIT 1');
  2.  
  3. $row = $query->row_array();
  4. echo $row['name'];

Функция row_array() возвращает массив. Пример: $row['name']

Стандартная вставка в БД

  1. $sql = "INSERT INTO mytable (title, name)
  2. VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";
  3.  
  4. $this->db->query($sql);
  5.  
  6. echo $this->db->affected_rows();

Запрос Active Record

Шаблон Active Record предоставляет упрощенные методы получения данных:

  1. $query = $this->db->get('table_name');
  2.  
  3. foreach ($query->result() as $row)
  4. {
  5. echo $row->title;
  6. }

В примере выше функция get() возвращает список всех записей из заданной таблицы. Класс Active Record содержит полный набор методов для работы с данными в БД.

Вставка с использованием Active Record

  1. $data = array(
  2. 'title' => $title,
  3. 'name' => $name,
  4. 'date' => $date
  5. );
  6.  
  7. $this->db->insert('mytable', $data);
  8.  
  9. // Produces: INSERT INTO mytable (title, name, date) VALUES ('{$title}', '{$name}', '{$date}')

кто знает -

кто знает - Вставка с использованием Active Record - в этом случае происходит автоматическое экранирование?

Да, происходит.

Да, происходит. Но с active record нужно быть осторожным в плане обновлений и удалений - если для where-условия, которое передается как массив передать NULL, и параметр только один(к примеру ID), то будет сформирована команда с пустой частью where. Пример:
$data = array('field'=>10);
$this->db->where(array('id'=>1));
$this->db->update('tablename',$data);
В итоге будет выполнен запрос
UPDATE `tablename` set field=10 WHERE id=1

А если код будет следующий:
$data = array('field'=>10);
$this->db->where(array('id'=>NULL));
$this->db->update('tablename',$data);
то запрос в итоге будет такой:
UPDATE `tablename` set field=10, т.е. будут изменены все записи таблицы.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

CAPTCHA
Этот вопрос предназначен для того, чтобы отсеять ботов
6 + 2 =
Решите простой математический пример и введите результат. К примеру, для вопроса 1+3 нужно ввести 4

Вход в систему

Последние комментарии