db::connect() — Подключение к базе данных
db::query() — Произвольный запрос к базе данных
db::select() — Выбор нескольких строк из таблицы
db::fetch() — Выбор одной строки из таблицы
db::get_var() — Получение определенной ячейки из запроса
db::count() — Получает количество строк
db::update() — Обновляет запись
db::delete() — Удалить запись
db::insert() — Вставляет запись в таблицу
db::insert_id() — Возвращает идентификатор, сгенерированный при последнем INSERT-запросе
db::esc() — Экранирует специальные символы
db::error() — Возвращает сообщение с ошибкой
db::is_exsits_column() — Проверяет, существует ли указанная колонка в таблице
Вспомогательные методы для внутреннего использования
db::get_construct_where_field()
db::get_construct_query_where()
db::get_construct_query_insert()
db::get_construct_query_update()
Приватные методы
self::instance()
self::get_type()
connect() — подключение к базе данных
Основной конфигурационный метод класса db для подключения к базе данных
Возвращает true в случае успеха, или false если с подключением возникли проблемы.
$connected = db::connect($db_host, $db_user, $db_pass, $db_name); // true or false
query() — Произвольный запрос в базу данных
Выполняет любые запросы к базе данных
db::query("DELETE FROM user WHERE id = '13'"); // Удалим пользователя с id 13
db::query("UPDATE user SET money = '500' WHERE id = '1'"); // Обновим количество монет пользователю с id 1
select() — Выборка нескольких строк из таблицы
Позволяет получить несколько записей из таблицы, возвращает ассоциативный массив или объект массива.
db::select($query, $output );
$query (string) — Запрос который нужно выполнить.
$output (boolean) — true вернет ассоциативный массив / false в виде объекта
Пример использования
$results = db::select("SELECT id, nick FROM user LIMIT 2", ARRAY_A);
foreach($results AS $user)
echo $user['nick'];
$results = db::select("SELECT id, nick FROM user LIMIT 2", ARRAY_N);
foreach($results AS $user)
echo $user[1];
$results = db::select("SELECT id, nick FROM user LIMIT 2", OBJECT);
foreach($results AS $user)
echo $user->nick;
fetch() — Выбор одной строки из таблицы
Возвращает первый результат выполнения запроса, получить можно ассоциативный, нумерованный массив или объект.
$result = db::fetch($query, $output);
$query (string) — Запрос который нужно выполнить.
$output (boolean) — true вернет ассоциативный массив / false в виде объекта
Пример использования
$result = db::fetch("SELECT id, nick FROM user", ARRAY_A);
echo $result['nick']; // Admin
$result = db::fetch("SELECT id, nick FROM user", OBJECT);
echo $result->nick; // Admin
$result = db::fetch("SELECT id, nick FROM user", ARRAY_N);
echo $result[1]; // Admin
get_var() — получение определенной ячейки из запроса
Получает значение одной ячейки из результата запроса. По умолчанию берется первая ячейка — это первая колонка и первая строка. Если второй аргумент метода установить в true, то результат запроса будет массивом первых ячеек из результата.
$query (string) — Запрос который нужно выполнить.
$output (boolean) — false вернет строку / true в виде массива, по умолчанию: false
Пример использования
$result = db::get_var("SELECT nick FROM user", false);
print_r($result); // Admin
$result = db::get_var("SELECT id FROM user WHERE `nick` = 'Admin'", false);
print_r($result); // 1
$results = db::get_var("SELECT id FROM user WHERE `nick` like '%alex%'", true);
print_r($result); // [5, 9, 101, 54]
count() — получает количество строк
$query (string) — Запрос который нужно выполнить.
Этот метод позволяет получить количество строк, в формате целого числа.
Пример использования
$result = db::count("SELECT COUNT(*) FROM files");
print_r($result); // 134
insert() — вставляет запись в таблицу
Использование
db::insert($table, $array);
$table — Имя таблицы
$array — Массив значений для вставки, в качестве ключей поля таблицы.
db::insert('user_log', ['user_id' => $ID, 'ip' => get_ip_address()]); // пример запроса
insert_id()
Возвращает значение, созданное для столбца AUTO_INCREMENT последним запросом
db::insert('table', ['key' => 'value']);
$last_id = db::insert();
update() — обновляет запись
Результатом выполнения запроса этим методом, будет true в случае успеха, и false при неудаче.
$updateArray — Массив данных, которые следует обновить key = value.
$updateWhere — Конструктор запросов WHERE, подробнее см. в разделе о get_construct_query_where()
Примеры использования
Обновим ячейку money в таблице user у пользователя с ID 2
$updateArray = ['money' => 5];
$updateWhere = ['id' => 2];
$result = db::update('user', $updateArray, $updateWhere);
var_dump($result); // true
delete() — удалить запись
Результатом выполнения запроса этим методом, будет true в случае успеха, и false при неудаче.
$deleteWhere — Конструктор запросов WHERE, подробнее см. в разделе о get_construct_query_where()
Пример использования
Удалим запись о «лайке» фида из таблицы feeds_likes
$deleteWhere = array(
'user_id' => 1,
'object_id' => 11,
);
db::delete('feeds_likes', $deleteWhere); // true
is_exsits_column()
Проверяет, существует ли указанная колонка в таблице
// Существует ли колонка с полем id в таблице user
if (db::is_exsits_column('user', 'id')) {
// да
} else {
// нет
}
esc()
Экранирует специальные символы в строке для использования в SQL-выражении
$name = db::esc($_POST['name']);
get_construct_where_field()
Вспомогательный метод класса db для построения WHERE запросов, формирует строку запроса на основании операторов = != IN NOT IN и т.д.
db::get_construct_where_field($value['operator'], $value['value']); // array
get_construct_query_where()
Конструктор для формирования WHERE параметров SQL запроса, позволяет при помощи массива правил составлять сложные запросы.
relation — принимает значения OR или AND
field — имя столбца таблицы
value — значение с которым будет идти сравнение
operator — как сравнивать указанное в value значение. Может быть:
=
— равно.!=
— не равно.>
— больше.>=
— больше или равно.<
— меньше.<=
— меньше или равно.IN
— в value указываются несколько значений в массиве и поиск идет хотя бы по одному из значений.NOT IN
— любое значение, кроме тех что указаны в виде массива в value.
var_dump(db::get_construct_query_where('user', ['id' => 1]));
var_dump(db::get_construct_query_where('user', ['id' => 1, 'nick' => 'Admin']));
var_dump(db::get_construct_query_where('user', [
'relation' => 'OR', [
'field' => 'id',
'value' => 1,
], [
'relation' => 'AND', [
'field' => 'level',
'operator' => '>=',
'value' => 3,
], [
'field' => 'nick',
'operator' => 'IN',
'value' => ['Admin', 'Alex', 'Vasja'],
],
],
]));
В результате получим
string(22) " AND (user.id = '1')"
string(46) " AND (user.id = '1' AND user.nick = 'Admin')"
string(91) " AND (user.id = '1' OR (user.level >= '3' AND user.nick IN ( 'Admin', 'Alex', 'Vasja')))"
get_construct_query_insert()
Формирует текстовое представление SQL параметров из массива, возвращает массив с отформатированными ключами и значениями для последующего использования в методе db::insert()
$query = db::get_construct_query_insert(['id' => 1, 'nick' => 'Test']); // array
$sql = "INSERT INTO `" . $table . "` (" . join(',', $query['query_keys']) . ") VALUES(" . join(',', $query['query_values']) . ")";
get_construct_query_update()
$query = db::get_construct_query_update($query); // array
$sql = 'UPDATE `' . $table . '` SET ' . join(',', $query['query_keys']) . ' WHERE 1=1 ';