Быстрый старт: Примеры кода
Эта страница содержит примеры кода, показывающие, как использовать класс базы данных. Для подробной информации, пожалуйста, прочтите страницы, описывающие каждую функцию.
Инициализация класса БД
Следующий код загружает и инициализирует класс базы данных, на основании ваших конфигурационных параметров:
$this->load->database();
Загруженный класс может быть использован, как показано.
Примечание: Если все ваши страницы требуют доступа к БД, вы можете соединяться автоматически. Смотрите страницу Соединение для получения более подробной информации.
Обычный запрос с множеством результатов (объектная версия)
$query = $this->db->query('SELECT name, title, email FROM my_table');
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->email;
}
echo 'Total Results: ' . $query->num_rows();
Выше функция result() возвращает массив объектов. Пример: $row->title
Стандартный запрос с множеством результатов (версия с массивами)
$query = $this->db->query('SELECT name, title, email FROM my_table');
foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['email'];
}
Выше функция result_array() возвращает массив с обычными индексами. Например: $row['title']
Тестирование результатов
Если ваши запросы могут не производить результат, возможно тестировать результат функцией num_rows():
$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
}
Примечание переводчика: Пустой результат, возращенный row(), row_array(), result() или result_array(), можно обнаружить простым сравнением с FALSE. Например, if ($result) { что-то делаем } else { echo 'пусто'; }. По факту так работать удобнее. Для функций row_array() и result_array() также возможно использовать is_empty(), если вам так больше нравится.
Примечание переводчика: Удобно присваивать возвращенный результат переменной, имя которой соответствует абстракции (сущности), с которой вы работаете. Это облегчает кодирование и дает особо значительный выигрыш в отладке и при работе с большими фрагментами кода.
Обычный запрос с единственным результатом
$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row();
echo $row->name;
Выше функция row() возвращает объект. Например: $row->name
Обычный запрос с единственным результатом (версия с массивом)
$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row_array();
echo $row['name'];
Выше функция row_array() возвращает массив. Пример: $row['name']
Обычная вставка
$sql = "INSERT INTO mytable (title, name)
VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";
$this->db->query($sql);
echo $this->db->affected_rows();
Запрос Active Record
Паттерн Active Record дает вам упрощенные средства получения данных:
$query = $this->db->get('table_name');
foreach ($query->result() as $row)
{
echo $row->title;
}
Выше функция get() возвращает все строки из таблицы. Класс Active Record содержит полное описание функций для работы с данными.
Вставка Active Record
$data = array(
'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, уже давно является нормой в современном программировании. Напротив, работа без слоев считается муветоном, и это вполне оправдано. Подробности гуглятся.