Created
April 25, 2017 01:17
-
-
Save Cyberiaaxis/ef8fddb7542cca69de60b26eb4df02ba to your computer and use it in GitHub Desktop.
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
<?php | |
class DB { | |
private static $_instance = null; // to use in getInstance function (we can use static keyword) | |
private $_pdo, $_query, $_error = false, $_results, $_count = 0; | |
private function __construct() { | |
try { | |
$this->_pdo = new PDO("mysql:host=" . Config::get('mysql/host') . | |
';dbname=' . Config::get('mysql/db'), Config::get('mysql/username') | |
, Config::get('mysql/password')); | |
$this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | |
// print "Connected"; | |
} catch (PDOException $ex) { | |
die($ex->getMessage()); | |
}; | |
} | |
public static function getInstance() { | |
if (!isset(self::$_instance)) { | |
self::$_instance = new DB(); | |
} | |
return self::$_instance; | |
} | |
public function query($sql, $params = []) { | |
$this->_error = false; | |
// print $sql; | |
if ($this->_query = $this->_pdo->prepare($sql)) { | |
$x = 1; | |
// var_dump($params); | |
if (count($params)) { | |
foreach ($params as $param) { | |
// print $x; | |
$this->_query->bindValue($x, $param); | |
$x++; | |
} | |
} | |
if ($this->_query->execute()) { | |
try{ | |
if(!$_SESSION['session/session_name']){ | |
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ); | |
$this->_count = $this->_query->rowCount(); | |
} | |
} catch (PDOException $pdo){ | |
$pdo->getMessage(); | |
} | |
} else { | |
$this->_error = true; | |
} | |
} | |
return $this; | |
} | |
public function action($action, $table, $where = []) { | |
if (count($where) === 3) { | |
$operators = ['=', '>', '<', '>=', '<=']; | |
$field = $where[0]; | |
$operator = $where[1]; | |
$value = $where[2]; | |
if (in_array($operator, $operators)) { | |
$sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?"; | |
if (!$this->query($sql, [$value])->error()) { | |
return $this; | |
} | |
} | |
} | |
return false; | |
} | |
public function get($table, $where) { | |
return $this->action("SELECT *", $table, $where); | |
} | |
public function delete($table, $where) { | |
return $this->action("DELETE", $table, $where); | |
} | |
public function results() { | |
return $this->_results; | |
} | |
public function first() { | |
return $this->results()[0]; | |
} | |
public function insert($table, $fields = []) { | |
$keys = array_keys($fields); | |
$values = ''; | |
$y = 1; | |
foreach ($fields as $field) { | |
$values .= '?'; | |
if ($y < count($fields)) { | |
$values .= ','; | |
} | |
$y++; | |
} | |
$sql = 'INSERT INTO ' . $table . ' (' . implode(',', $keys) . ') VALUES (' . $values . ')'; | |
// print $sql; | |
//var_dump($this->query($sql, $fields)); | |
if (!$this->query($sql, $fields)->error()) { | |
return true; | |
} | |
return false; | |
} | |
public function update($table, $id, $fields) { | |
$set = ''; | |
$x = 1; | |
foreach ($fields as $name => $value) { | |
$set .= $name . ' = ?'; | |
if ($x < count($fields)) { | |
$set .= ','; | |
} | |
$x++; | |
} | |
$sql = "UPDATE $table SET $set WHERE id = $id"; | |
echo $sql; | |
if (!$this->query($sql, $fields)->error()) { | |
return true; | |
} | |
} | |
public function error() { | |
return $this->_error; | |
} | |
public function count() { | |
return $this->_count; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment