Сегодня зашел в этот класс и ужаснулся. Какой он бесполезный!
Кто использует обертки для mysqli?(скиньте примеры)
Стоит ли их вообще использовать?
PS. в своем классе не вижу смысла. Бессмысленная бредятина. Видимо год назад я мыслил как-то по другому. вижу только один плюс - логирование ошибок
#
#
# Класс обёртка для mysqli
#
#
class DB
{
// Ссылка на лог ошибок БД
private static $patch_log_bd = PATCH_LOG_BD;
// Ссылка на лог запросов БД
private static $patch_log_sql = PATCH_LOG_SQL;
// Данные для подключения
private static $host = BD_SERV;
private static $user = BD_USER;
private static $pass = BD_PASS;
private static $db = BD_BASE;
// Кодировка
private static $charset = BD_CHARSET;
// Режим отладки
private static $debug = DEBUG;
// Объект коннекта к БД
private static $mysqli = false;
// Количество запросов на странице
private static $count = 0;
//----------------------------------------
// Коннект к БД
public static function connect()
{
$mysqli = new mysqli(self::$host, self::$user, self::$pass, self::$db);
if ($mysqli->connect_error)
die('NOT Connecting with DB');
$mysqli->set_charset(self::$charset);
self::$mysqli = $mysqli;
}
//----------------------------------------
// Получаем количество выполненых запросов
public static function getCount()
{
return self::$count;
}
//----------------------------------------
// Выполняет запрос в БД по предоставленному SQL
public static function q($sql, $type = null)
{
// Если соединение не было не установлено, то устанавливаем
if (!self::$mysqli)
self::connect();
// это наша статистика по запросу
$start = microtime(true);
self::$count++;
$res = self::$mysqli->query($sql);
if (!$res)
{
// Запись ошибки в лог
$trace = debug_backtrace();
$error = date("Y-m-d H:i:s") .":\n ". $trace[0]['file'] ."\n". $trace[0]['line'] ."\n". $sql ."\n". mysqli_error(self::$mysqli);
file_put_contents(self::$patch_log_bd, strip_tags($error)."\n\n", FILE_APPEND);
die('Error DB query');
}
else if (self::$debug)
{
file_put_contents(self::$patch_log_sql, self::$count .") ". strip_tags($sql)."\n\rtime: ". (microtime(true)-$start) ."\n\r", FILE_APPEND);
}
switch ($type)
{
case 'assoc' : return $res->fetch_all(MYSQLI_ASSOC); break;
case 'num' : return $res->fetch_all(MYSQLI_NUM); break;
case 'both' : return $res->fetch_all(MYSQLI_BOTH); break;
}
return $res;
}
//----------------------------------------
// Обертка real_escape_string
public static function escape($data)
{
// Если соединение не было не установлено, то устанавливаем
if (!self::$mysqli)
self::connect();
return self::$mysqli->real_escape_string($data);
}
//----------------------------------------
// ид полседней записи
public static function insert_id()
{
return self::$mysqli->insert_id;
}
// сколько было изменено строк последним UPDATE
public static function affected_rows()
{
return self::$mysqli->affected_rows;
}
//Получаем все результаты
public static function clear_result()
{
self::$mysqli->next_result();
return true;
}
}