Class db — Класс для работы с базой данных

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 ';