Created
May 9, 2019 17:42
-
-
Save Padilo300/f949937dd1889b0888a49fee429c6826 to your computer and use it in GitHub Desktop.
PDO wrapper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class DB | |
{ | |
public static $dsn = 'mysql:dbname=table;host=localhost'; | |
public static $user = 'user'; | |
public static $pass = 'password'; | |
/** | |
* Объект PDO. | |
*/ | |
public static $dbh = null; | |
/** | |
* Statement Handle. | |
*/ | |
public static $sth = null; | |
/** | |
* Выполняемый SQL запрос. | |
*/ | |
public static $query = ''; | |
/** | |
* Подключение к БД | |
*/ | |
public static function getDbh() | |
{ | |
if (!self::$dbh) { | |
try { | |
self::$dbh = new PDO( | |
self::$dsn, | |
self::$user, | |
self::$pass, | |
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'") | |
); | |
self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); | |
} catch (PDOException $e) { | |
exit('Error connecting to database: ' . $e->getMessage()); | |
} | |
} | |
return self::$dbh; | |
} | |
/** | |
* Добавление в таблицу, в случаи успеха вернет вставленный ID, иначе 0. | |
*/ | |
public static function add($query, $param = array()) | |
{ | |
self::$sth = self::getDbh()->prepare($query); | |
return (self::$sth->execute((array) $param)) ? self::getDbh()->lastInsertId() : 0; | |
} | |
/** | |
* Выполнение запроса. | |
*/ | |
public static function set($query, $param = array()) | |
{ | |
self::$sth = self::getDbh()->prepare($query); | |
return self::$sth->execute((array) $param); | |
} | |
/** | |
* Получение строки из таблицы. | |
*/ | |
public static function getRow($query, $param = array()) | |
{ | |
self::$sth = self::getDbh()->prepare($query); | |
self::$sth->execute((array) $param); | |
return self::$sth->fetch(PDO::FETCH_ASSOC); | |
} | |
/** | |
* Получение всех строк из таблицы. | |
*/ | |
public static function getAll($query, $param = array()) | |
{ | |
self::$sth = self::getDbh()->prepare($query); | |
self::$sth->execute((array) $param); | |
return self::$sth->fetchAll(PDO::FETCH_ASSOC); | |
} | |
/** | |
* Получение значения. | |
*/ | |
public static function getValue($query, $param = array(), $default = null) | |
{ | |
$result = self::getRow($query, $param); | |
if (!empty($result)) { | |
$result = array_shift($result); | |
} | |
return (empty($result)) ? $default : $result; | |
} | |
/** | |
* Получение столбца таблицы. | |
*/ | |
public static function getColumn($query, $param = array()) | |
{ | |
self::$sth = self::getDbh()->prepare($query); | |
self::$sth->execute((array) $param); | |
return self::$sth->fetchAll(PDO::FETCH_COLUMN); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DB::getRow — получение одной записи из БД | |
$item = DB::getRow("SELECT * FROM `category` WHERE `id` = ?", 1); | |
// Или | |
$item = DB::getRow("SELECT * FROM `category` WHERE `id` = :id", array('id' => 1)); | |
print_r($item); | |
Array | |
( | |
[id] => 1 | |
[parent] => 0 | |
[name] => Мороженое | |
) | |
DB::getAll — получение нескольких записей из БД | |
$items = DB::getAll("SELECT * FROM `category` WHERE `id` > 2"); | |
print_r($items); | |
Array | |
( | |
[0] => Array | |
( | |
[id] => 3 | |
[parent] => 0 | |
[name] => Фрукты | |
) | |
[1] => Array | |
( | |
[id] => 4 | |
[parent] => 0 | |
[name] => Ягоды | |
) | |
[2] => Array | |
( | |
[id] => 5 | |
[parent] => 2 | |
[name] => Грибы | |
) | |
... | |
) | |
DB::getValue — получения значения | |
$value = DB::getValue("SELECT `name` FROM `category` WHERE `id` = 2"); | |
print_r($value); | |
Овощи | |
DB::getColumn — получения значений колонки | |
$values = DB::getColumn("SELECT `name` FROM `category`"); | |
print_r($values); | |
Array | |
( | |
[0] => Мороженое | |
[1] => Овощи | |
[2] => Фрукты | |
[3] => Ягоды | |
[4] => Грибы | |
[5] => Морепродукты | |
... | |
) | |
DB::add — добавление в БД | |
Метод возвращает ID вставленной записи. | |
$insert_id = DB::add("INSERT INTO `category` SET `name` = ?", 'Яблоки'); | |
DB::set — все остальные запросы | |
Выполняет запросы в БД, такие как DELETE, UPDATE, CREATE TABLE и т.д. В случаи успеха возвращает true. | |
DB::set("DELETE FROM `category` WHERE `id` > ? AND `parent` > ?", array(123, 0)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment