Начальная информация, примеры использования
- Автор mityok on августа 13th, 2008
Данная страница содержит примеры использования класса Database. Полное описание функциональности содержится в отдельных страницах данного руководства.
Инициализация класса Database
Следующий код инициализирует класс Database на основе настроек конфигурации:
$this->load->database();
После инициализации вы можете использовать класс как показано ниже.
Примечание: если все ваши страницы требуют подключения к базе данных, вы можете настроить автоматическое подключение.
Стандартный запрос с несколькими записями (объектная версия)
$query = $this->db->query('SELECT name, title, email FROM my_table'); foreach ($query->result() as $row) { }
В коде выше функция result() вернет массив объектов. Пример: $row->title
Стандартный запрос с несколькими записями (версия с использованием массива)
$query = $this->db->query('SELECT name, title, email FROM my_table'); foreach ($query->result_array() as $row) { }
В приведенном выше коде функция result_array() вернет массив записей с названиями полей в качестве индексов. Пример: $row['title']
Проверка на наличие результата
Если в результате вашего запроса может не быть результатов, рекомендуется использовать функцию num_rows() для проверки:
$query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { } }
Стандартный запрос с единственной записью
$query = $this->db->query('SELECT name FROM my_table LIMIT 1'); $row = $query->row();
Функция row() возвращает объект. Пример: $row->name
Стандартный запрос с единственной записью (версия с использованием массива)
$query = $this->db->query('SELECT name FROM my_table LIMIT 1'); $row = $query->row_array();
Функция row_array() возвращает массив. Пример: $row['name']
Стандартная вставка в БД
$sql = "INSERT INTO mytable (title, name) VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")"; $this->db->query($sql);
Запрос Active Record
Шаблон Active Record предоставляет упрощенные методы получения данных:
$query = $this->db->get('table_name'); foreach ($query->result() as $row) { }
В примере выше функция get() возвращает список всех записей из заданной таблицы. Класс Active Record содержит полный набор методов для работы с данными в БД.
Вставка с использованием Active Record
'title' => $title, 'name' => $name, 'date' => $date ); $this->db->insert('mytable', $data); // 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, т.е. будут изменены все записи таблицы.
Отправить комментарий