CodeIgniter, руководство пользователя к версии 1.6.1


Запросы

$this->db->query();

Чтобы отправить запрос, используйте следующую функцию:

$this->db->query('ЗДЕСЬ ВАШ ЗАПРОС');

Функция query() возвращает объект результатов выборки из базы данных (если выполняются запросы на чтение). Полученный объект можно использовать для вывода результатов. Когда выполняются запросы на вставку или изменение данных, возвращается только TRUE или FALSE в зависимости от того, успешно или нет был выполнен запрос. В процессе получения данных, чаще всего, необходимо присваивать результаты запроса отдельной переменной. Пример:

$query = $this->db->query('ЗДЕСЬ ВАШ ЗАПРОС');

$this->db->simple_query();

Это упрощённая версия функции $this->db->query(). Она возвращает ТОЛЬКО TRUE или FALSE в зависимости от успешности выполнения запроса. Функция НЕ возвращает никакого набора данных и НЕ выполняет ничего кроме обычной отправки запроса к базе данных. Большинство пользователей использует эту функцию очень редко.

Ручное добавление префиксов к базе данных

Если в конфигурации вы установили префикс и хотите вручную указать его в своём коде, то необходимо выполнить следующее:

$this->db->dbprefix('таблица');
// выводит конструкцию "префикс_таблица"

Защита идентификаторов

В большинстве баз данных рекомендуется производить защиту имён таблиц и полей. Запросы Active Record защищены автоматически, но если вы хотите выполнить защиту идентификатора вручную, используйте следующее:

$this->db->protect_identifier('имя_таблицы');

Экранирование в запросах

Экранирование данных в запросах перед отправкой к базе данных - это очень хороший стиль. В CodeIgniter есть две функции, которые вам помогут:

  1. $this->db->escape() Эта функция определяет тип передаваемых данных, поэтому может экранировать только строки. Также, функция автоматически добавляет одинарные кавычки, поэтому вам не надо прибегать к дополнительным действиям: $sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";
  2. $this->db->escape_str() Эта функция экранирует все поступающие в неё данные не взирая на их тип. Большую часть времени вы будете использовать скорее не эту, а предыдущую функцию. Пример использования: $sql = "INSERT INTO table (title) VALUES('".$this->db->escape_str($title)."')";

Привязка переменных к запросам

Используя привязку переменных вы можете упростить синтаксис ваших запросов, позволяя системе самой подставить переменные в запрос. Рассмотрим следующий пример:

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";

$this->db->query($sql, array(3, 'live', 'Rick'));

Знаки вопроса автоматически замещаются значениями переменных, переданных в виде массива вторым параметром функции запроса.

Дополнительным преимуществом использования привязки является автоматическое экранирование переменных, что в результате даёт более безопасные запросы. В таком случае вам не придётся вручную контролировать экранирование данных.