DB

Описание

Класс DB - предназначен для работы с базой данных.

Доступен из любой точки программы.
Реализован в виде синглтона, что исключает его дублирование.
Все запросы выполняемые в коде движка должны обязательно проходить через метод DB::query() данного класса, а параметры запроса экранироваться методом DB::quote();
- Создает соединение с БД средствами mysqli;
- Защищает базу от SQL инъекций;
- Ведет логирование запросов если установленна данная опция;

Методы класса

string buildPartQuery() Строит часть запроса из полученного ассоциативного массива.
$array = (
    
'login' => 'admin',
    
'pass' => '1',
);
// преобразует массив в строку: "'login' = 'admin', 'pass' = '1'"
DB::buildPartQuery($array);
obj|bool buildQuery() Строит часть запроса из полученного ассоциативного массива и исполняет запрос.
$array = array(
    
'parent_url' => '',
    
'parent' => 0,
    
'title' => 'Блог',
    
'url' => 'blog',
    
'html_content' => 'Наш блог'
);
DB::buildQuery("INSERT INTO `".PREFIX."page` SET "$array);
array fetchAssoc() Возвращает ряд результата запроса в виде ассоциативного массива.
$res DB::query($sql);
while (
$row DB::fetchAssoc($res)) {
    
viewdata($row);
}
obj fetchObject() Возвращает ряд результата запроса в виде объекта.
$res DB::query($sql);
while (
$row DB::fetchObject($res)) {
    
viewdata($row);
}
array fetchArray() Возвращает ряд результата запроса в виде массива с ассоциативными и числовыми ключами.
$res DB::query($sql);
while (
$row DB::fetchArray($res)) {
    
viewdata($row);
}
obj fetchRow() Возвращает ряд результата запроса в виде массива с числовыми ключами.
$res DB::query($sql);
while (
$row DB::fetchRow($res)) {
    
viewdata($row);
}
int insertId() Возвращает автоматически сгенерированный ID, созданный последним INSERT запросом.
$lastId DB::insertId();
viewdata($lastId);
int numRows() Возвращает количество рядов результата запроса.
$res DB::query($sql);
$numRows DB::numRows($res);
viewdata($numRows);
int affectedRows() Получает число строк, затронутых предыдущей операцией MySQL.
DB::query($sql);
$affectedRows DB::affectedRows();
viewdata($affectedRows);
void createIndexIfNotExist() Функция для создания индексов в таблицах с проверкой на их существование.
$table 'property_data';
$column 'id';
DB::createIndexIfNotExist($table$column);
obj|bool query() Выполняет запрос к БД.
$sql "SELECT * FROM `".PREFIX."product`";
$res DB::query($sql);
while (
$row DB::fetchAssoc($res)) {
    
viewdata($row);
}
string quote() Экранирует кавычки для части запроса.
// использование с кавычками
$title 'Чука Крабс';
$sql "SELECT * FROM `".PREFIX."product` WHERE `title` = ".DB::quote($title);
// использование без кавычек
$title 'дверь';
$sql "SELECT * FROM `".PREFIX."product` WHERE `title` LIKE '%".DB::quote($titletrue)."%'";
// опасный запрос от пользователя
$_POST['title'] = "Чука Крабс';TRUNCATE mg_setting";
$sql "SELECT * FROM `".PREFIX."product` WHERE `title` = ".DB::quote($_POST['title']);
int quoteInt() Экранирует кавычки для части запроса и преобразует экранируемую часть запроса в тип integer.
$id '123';
$sql "SELECT * FROM `".PREFIX."order` WHERE `id` = ".DB::quoteInt($id);
int quoteFloat() Экранирует кавычки для части запроса, заменяет запятую на точку и преобразует экранируемую часть запроса в тип float.
$summ '123,45';
$sql "SELECT * FROM `".PREFIX."order` WHERE `summ` = ".DB::quoteFloat($summ);
string quoteIN() Экранирует кавычки для части запроса и преобразует экранируемую часть запроса в пригодный вид для условий типа IN.
$titleArr = array(
    
'Чука Крабс',
    
'Дверь межкомнаткая Тенго 22A',
    
'Стол кухонный Bin04'
);
$sql "SELECT * FROM `".PREFIX."product` WHERE `title` IN (".DB::quoteIN($titleArr).")";
string errorLog() Пишет в лог запросы с синтаксическими ошибками.
string console() Выводит консоль запросов и ошибок.
echo DB::console('Тест');
string lastQuery() Выводит последний выполненный SQL запрос.
$lastQuery DB::lastQuery();
viewdata($lastQuery);
int idAutoIncrement() Возвращает следующее значение auto_increment таблицы.
$idAutoIncrementTables DB::idAutoIncrement("product");
viewdata($idAutoIncrementTables);
int addAutoIncrement() Увеличивает значение auto_increment таблицы на заданное число.
$idAutoIncrementTables DB::addAutoIncrement("product",1);
viewdata($idAutoIncrementTables);
void close() Закрывает соединение с БД.
DB::close();
Описание методов и примеры их использования

Метод

string buildPartQuery (array $arraystring $devide = ,)

Параметры

  • $array: ассоциативный массив полей с данными.
  • $devide: разделитель.

Описание

Строит часть запроса из полученного ассоциативного массива.

$array = (
    
'login' => 'admin',
    
'pass' => '1',
);
// преобразует массив в строку: "'login' = 'admin', 'pass' = '1'"
DB::buildPartQuery($array);

Метод

obj|bool buildQuery (array $arraystring $devide = ,)

Параметры

  • string SQL запрос.
  • $array: ассоциативный массив.
  • $devide: разделитель

Описание

Строит часть запроса из полученного ассоциативного массива и исполняет запрос.

$array = array(
    
'parent_url' => '',
    
'parent' => 0,
    
'title' => 'Блог',
    
'url' => 'blog',
    
'html_content' => 'Наш блог'
);
DB::buildQuery("INSERT INTO `".PREFIX."page` SET "$array);

Метод

array fetchAssoc (obj $object)

Параметры

  • $object:

Описание

Возвращает ряд результата запроса в виде ассоциативного массива.

$res DB::query($sql);
while (
$row DB::fetchAssoc($res)) {
    
viewdata($row);
}

Метод

obj fetchObject (obj $object)

Параметры

  • $object:

Описание

Возвращает ряд результата запроса в виде объекта.

$res DB::query($sql);
while (
$row DB::fetchObject($res)) {
    
viewdata($row);
}

Метод

array fetchArray (obj $object)

Параметры

  • $object:

Описание

Возвращает ряд результата запроса в виде массива с ассоциативными и числовыми ключами.

$res DB::query($sql);
while (
$row DB::fetchArray($res)) {
    
viewdata($row);
}

Метод

obj fetchRow (obj $object)

Параметры

  • $object:

Описание

Возвращает ряд результата запроса в виде массива с числовыми ключами.

$res DB::query($sql);
while (
$row DB::fetchRow($res)) {
    
viewdata($row);
}

Метод

int insertId ()

Описание

Возвращает автоматически сгенерированный ID, созданный последним INSERT запросом.

$lastId DB::insertId();
viewdata($lastId);

Метод

int numRows (obj $object)

Параметры

  • $object:

Описание

Возвращает количество рядов результата запроса.

$res DB::query($sql);
$numRows DB::numRows($res);
viewdata($numRows);

Метод

int affectedRows ()

Описание

Получает число строк, затронутых предыдущей операцией MySQL.

DB::query($sql);
$affectedRows DB::affectedRows();
viewdata($affectedRows);

Метод

createIndexIfNotExist (string $tablestring $column)

Параметры

  • $table: целевая таблица
  • $column: столбец для индекса

Описание

Функция для создания индексов в таблицах с проверкой на их существование.

$table 'property_data';
$column 'id';
DB::createIndexIfNotExist($table$column);

Метод

obj|bool query (string $sqlbool $noError false$addLog false)

Параметры

  • $sql: запрос
  • $noError: не выводить SQL ошибку

Описание

Выполняет запрос к БД.

$sql "SELECT * FROM `".PREFIX."product`";
$res DB::query($sql);
while (
$row DB::fetchAssoc($res)) {
    
viewdata($row);
}

Метод

string quote (string $stringstring $noQuote false)

Параметры

  • $string: часть запроса.
  • $noQuote: - если true, то не будет выводить кавычки вокруг строки.

Описание

Экранирует кавычки для части запроса.

// использование с кавычками
$title 'Чука Крабс';
$sql "SELECT * FROM `".PREFIX."product` WHERE `title` = ".DB::quote($title);
// использование без кавычек
$title 'дверь';
$sql "SELECT * FROM `".PREFIX."product` WHERE `title` LIKE '%".DB::quote($titletrue)."%'";
// опасный запрос от пользователя
$_POST['title'] = "Чука Крабс';TRUNCATE mg_setting";
$sql "SELECT * FROM `".PREFIX."product` WHERE `title` = ".DB::quote($_POST['title']);

Метод

int quoteInt (string $stringstring $noQuote false)

Параметры

  • $string: часть запроса.
  • $noQuote: - если true, то не будет выводить кавычки вокруг строки.

Описание

Экранирует кавычки для части запроса и преобразует экранируемую часть запроса в тип integer.

$id '123';
$sql "SELECT * FROM `".PREFIX."order` WHERE `id` = ".DB::quoteInt($id);

Метод

int quoteFloat (string $stringstring $noQuote false)

Параметры

  • $string: часть запроса.
  • $noQuote: - если true, то не будет выводить кавычки вокруг строки.

Описание

Экранирует кавычки для части запроса, заменяет запятую на точку и преобразует экранируемую часть запроса в тип float.

$summ '123,45';
$sql "SELECT * FROM `".PREFIX."order` WHERE `summ` = ".DB::quoteFloat($summ);

Метод

string quoteIN (string $stringbool $returnNull true)

Параметры

  • $string: часть запроса.
  • $returnNull: если первый аргумент пустой, то возвращает NULL, иначе пустую строку

Описание

Экранирует кавычки для части запроса и преобразует экранируемую часть запроса в пригодный вид для условий типа IN.

$titleArr = array(
    
'Чука Крабс',
    
'Дверь межкомнаткая Тенго 22A',
    
'Стол кухонный Bin04'
);
$sql "SELECT * FROM `".PREFIX."product` WHERE `title` IN (".DB::quoteIN($titleArr).")";

Метод

string errorLog (string $text)

Параметры

  • $text: - запрос вызвавший ошибку.

Описание

Пишет в лог запросы с синтаксическими ошибками.

Метод

string console (string $textstring $memory falsestring $start false)

Параметры

  • $text: - данные лога.
  • $memory: - Память скрипта в начале работы.
  • $start: - Время начала работы скрипта.

Описание

Выводит консоль запросов и ошибок.

echo DB::console('Тест');

Метод

string lastQuery ()

Описание

Выводит последний выполненный SQL запрос.

$lastQuery DB::lastQuery();
viewdata($lastQuery);

Метод

int idAutoIncrement ()

Описание

Возвращает следующее значение auto_increment таблицы.

$idAutoIncrementTables DB::idAutoIncrement("product");
viewdata($idAutoIncrementTables);

Метод

int addAutoIncrement ($number 1)

Описание

Увеличивает значение auto_increment таблицы на заданное число.

$idAutoIncrementTables DB::addAutoIncrement("product",1);
viewdata($idAutoIncrementTables);

Метод

close ()

Описание

Закрывает соединение с БД.

DB::close();