Skip to content

Instantly share code, notes, and snippets.

@ehcaning
Last active October 15, 2019 06:04
Show Gist options
  • Save ehcaning/cad1c677f53e5edb3e00367ed1fce5eb to your computer and use it in GitHub Desktop.
Save ehcaning/cad1c677f53e5edb3e00367ed1fce5eb to your computer and use it in GitHub Desktop.
My personal DB Class (Including Singleton)
<?php
# v2.2
class dbM {
private static $pdo;
private static $instance;
private function __construct() {
}
public static function init() {
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
try {
self::$pdo = new PDO(
'mysql:host=localhost;dbname=' . DB_NAME . ';charset=UTF8',
DB_USER,
DB_PASS,
[
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]
);
} catch (\Throwable $th) {
//throw $th;
}
}
return self::$instance;
}
public static function fetch($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetch();
}
public static function fetchColumn($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetchColumn();
}
public static function fetchAll($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll();
}
public static function fetchAllColumn($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll(PDO::FETCH_COLUMN);
}
public static function fetchKeyPair($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
}
public static function fetchKeyPairs($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_COLUMN);
}
public static function fetchGroup($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll(PDO::FETCH_GROUP);
}
public static function exist($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->rowCount() ? true:false;
}
public static function rowCount($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->rowCount();
}
public static function query($sql, $params = null) {
$stmt = self::$pdo->prepare($sql);
$stmt->execute($params);
return $stmt->rowCount();
}
public static function insert($tblName, $insertItems, $ignore = false) {
$sql = self::queryBuilder($tblName, $insertItems, $ignore);
$stmt = self::$pdo->prepare($sql);
$stmt->execute($insertItems);
return self::$pdo->lastInsertId();
}
/*
insertMany(
'my_table',
[ 'col1', 'col2' ],
[
[ 'col1_val_1', 'col2_val_1' ],
[ 'col1_val_2', 'col2_val_2' ],
[ 'col1_val_3', 'col2_val_3' ]
]
)
*/
public static function insertMany($tableName, $columns, $values, $ignore = false) {
$params = [];
$query = $ignore ?
"INSERT IGNORE INTO `${tableName}` (":
"INSERT INTO `${tableName}` (";
$columnsString = '';
foreach ($columns as $column) {
$columnsString .= '`' . $column . '`,';
}
$columnsString = rtrim($columnsString, ',');
$query .= $columnsString . ') VALUES ';
$valuesString = '';
foreach ($values as $value) {
$valuesString .= '(';
foreach ($value as $col) {
$valuesString .= "?,";
$params[] = $col;
}
$valuesString = rtrim($valuesString, ',');
$valuesString .= '),';
}
$valuesString = rtrim($valuesString, ',');
$query .= $valuesString;
return self::query($query, $params);
}
private static function queryBuilder($tblName, $insertItems, $ignore) {
$ignore = $ignore? 'IGNORE':'';
$c = '';
$v = '';
foreach ($insertItems as $key => $value) {
$c .= '`' . $key . '`,';
$v .= ':' . $key . ',';
}
$c = rtrim($c, ',');
$v = rtrim($v, ',');
$finalQuery = "INSERT {$ignore} INTO `{$tblName}` ({$c}) VALUES ({$v})";
return $finalQuery;
}
}
dbM::init();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment