Работа с БД: вспомогательные функции
- Автор mityok on августа 24th, 2008
$this->db->insert_id()
Возворащает идентификатор вставленной записи после выполнения команды.
$this->db->affected_rows()
Возвращает количество затронутых строк при выполнении команды на изменение данных.
Примечание: В MySQL "DELETE FROM TABLE" возвращает 0 затронутых строк. Класс работы с БД содержит небольшой хак который позволяет получить количество фактически затронутых строк. По умолчанию этот хак включен, но может быть выключен в файле драйвера работы с БД.
$this->db->count_all();
Данная функция возвращает общее количество строк в заданной таблице. Имя таблицы передается в качестве первого параметра. Пример:
// Выводится целое число, к примеру, 25
$this->db->platform()
Возвращает название платформы, которая используется (MySQL, MS SQL, Postgres и т.п.)
$this->db->version()
Возвращает испольуземую версию БД:
$this->db->last_query();
Возвращает последний выполненный запрос (строку запроса а не результат). Пример:
$str = $this->db->last_query(); // Будет получено к примеру: SELECT * FROM sometable....
Следующие функции помогают упростить процесс написания команд вставки и изменения данных.
$this->db->insert_string();
Данная функция упрощает процесс написания команд вставки данных. Она возвращает корректно форматированную строку SQL. Пример:
$str = $this->db->insert_string('table_name', $data);
Первый параметр - имя таблицы, второй - ассоциативный массив содержащий данные для вставки. В пример выше будет получена следующая строка:
INSERT INTO table_name (name, email, url) VALUES ('Rick', 'rick@your-site.com', 'www.your-site.com')
Примечание: данные будут автоматически экранированы, что позволяет получить более безопасные запросы.
$this->db->update_string();
Данная функция упрощает процесс написания команд изменеия данных. Она возвращает корректно сформированную строку SQL. Пример:
$where = "author_id = 1 AND status = 'active'"; $str = $this->db->update_string('table_name', $data, $where);
Первый параметр - имя таблицы, второй - ассоциативный массив данных для изменения, третий - условие для выборки (where). В приведенном выше примере будет получена следующая строка:
UPDATE table_name SET name = 'Rick', email = 'rick@your-site.com', url = 'www.your-site.com' WHERE author_id = 1 AND status = 'active'
Примечание: данные будут автоматически экранированы, что позволяет получить более безопасные запросы.

author_id = 1 AND status =
author_id = 1 AND status = 'active'
а если необходимо вставить
author_id = ".$author_id." AND status = 'active'
на эту часть экранирование распространяется? или только на вставляемые данные?
тогда пишем
тогда пишем так:
$data = array(....)
$where = array('author'=>$author_id,'status'=>'active');
CodeIgniter поддерживает как строку так и массив для указания where-части запроса.
Отправить комментарий