aboutsummaryrefslogtreecommitdiffstats
path: root/public/system/library/db/mpdo.php
diff options
context:
space:
mode:
Diffstat (limited to 'public/system/library/db/mpdo.php')
-rw-r--r--public/system/library/db/mpdo.php111
1 files changed, 111 insertions, 0 deletions
diff --git a/public/system/library/db/mpdo.php b/public/system/library/db/mpdo.php
new file mode 100644
index 0000000..1cdb0ea
--- /dev/null
+++ b/public/system/library/db/mpdo.php
@@ -0,0 +1,111 @@
+<?php
+namespace DB;
+final class mPDO {
+ private $connection = null;
+ private $statement = null;
+
+ public function __construct($hostname, $username, $password, $database, $port = '3306') {
+ try {
+ $this->connection = new \PDO("mysql:host=" . $hostname . ";port=" . $port . ";dbname=" . $database, $username, $password, array(\PDO::ATTR_PERSISTENT => true));
+ } catch(\PDOException $e) {
+ throw new \Exception('Failed to connect to database. Reason: \'' . $e->getMessage() . '\'');
+ }
+
+ $this->connection->exec("SET NAMES 'utf8'");
+ $this->connection->exec("SET CHARACTER SET utf8");
+ $this->connection->exec("SET CHARACTER_SET_CONNECTION=utf8");
+ $this->connection->exec("SET SQL_MODE = ''");
+ }
+
+ public function prepare($sql) {
+ $this->statement = $this->connection->prepare($sql);
+ }
+
+ public function bindParam($parameter, $variable, $data_type = \PDO::PARAM_STR, $length = 0) {
+ if ($length) {
+ $this->statement->bindParam($parameter, $variable, $data_type, $length);
+ } else {
+ $this->statement->bindParam($parameter, $variable, $data_type);
+ }
+ }
+
+ public function execute() {
+ try {
+ if ($this->statement && $this->statement->execute()) {
+ $data = array();
+
+ while ($row = $this->statement->fetch(\PDO::FETCH_ASSOC)) {
+ $data[] = $row;
+ }
+
+ $result = new \stdClass();
+ $result->row = (isset($data[0])) ? $data[0] : array();
+ $result->rows = $data;
+ $result->num_rows = $this->statement->rowCount();
+ }
+ } catch(\PDOException $e) {
+ throw new \Exception('Error: ' . $e->getMessage() . ' Error Code : ' . $e->getCode());
+ }
+ }
+
+ public function query($sql, $params = array()) {
+ $this->statement = $this->connection->prepare($sql);
+
+ $result = false;
+
+ try {
+ if ($this->statement && $this->statement->execute($params)) {
+ $data = array();
+
+ while ($row = $this->statement->fetch(\PDO::FETCH_ASSOC)) {
+ $data[] = $row;
+ }
+
+ $result = new \stdClass();
+ $result->row = (isset($data[0]) ? $data[0] : array());
+ $result->rows = $data;
+ $result->num_rows = $this->statement->rowCount();
+ }
+ } catch (\PDOException $e) {
+ throw new \Exception('Error: ' . $e->getMessage() . ' Error Code : ' . $e->getCode() . ' <br />' . $sql);
+ }
+
+ if ($result) {
+ return $result;
+ } else {
+ $result = new \stdClass();
+ $result->row = array();
+ $result->rows = array();
+ $result->num_rows = 0;
+ return $result;
+ }
+ }
+
+ public function escape($value) {
+ return str_replace(array("\\", "\0", "\n", "\r", "\x1a", "'", '"'), array("\\\\", "\\0", "\\n", "\\r", "\Z", "\'", '\"'), $value);
+ }
+
+ public function countAffected() {
+ if ($this->statement) {
+ return $this->statement->rowCount();
+ } else {
+ return 0;
+ }
+ }
+
+ public function getLastId() {
+ return $this->connection->lastInsertId();
+ }
+
+ public function isConnected() {
+ if ($this->connection) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public function __destruct() {
+ $this->connection = null;
+ }
+}