Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $testConnection = DB::openConnection('default', 'localhost', 'root', '1234', 'testdb');
- $test = new TestClass();
- echo $test->sayHello() . PHP_EOL;
- $addRowTest = new AddRowTest();
- $addRowTest->addRow('test', array(
- 'login' => 'rav',
- 'data' => "some sor't of data",
- ));
- var_dump($addRowTest->getRow());
- class AddRowTest
- {
- private function createTable()
- {
- DB::getConnection()->query("CREATE TABLE IF NOT EXISTS `test` (`login` VARCHAR(255), `data` TEXT) ENGINE=InnoDB");
- }
- public function addRow($tableName, $values = array())
- {
- $this->createTable();
- DB::getConnection()->addRow($tableName, $values);
- }
- public function getRow()
- {
- $stmt = DB::getConnection()->prepare("SELECT * FROM `test` WHERE `login`=?");
- $login = 'rav';
- $stmt->bind_param('s', $login);
- if ($stmt->execute()) {
- $res = $stmt->get_result();
- return $res->fetch_assoc();
- }
- return false;
- }
- }
- class TestClass
- {
- public function sayHello()
- {
- $res = DB::getConnection()->query("SELECT 'hello'");
- return array_shift($res->fetch_row());
- }
- }
- class DB extends mysqli
- {
- private static $_connections = array();
- private function __construct($host, $user, $password, $dbname, $port, $socket) {
- parent::__construct($host, $user, $password, $dbname, $port, $socket);
- }
- public static function openConnection($connectionName, $host, $user, $password = '', $dbname = '', $port = 3306, $socket = null)
- {
- if (empty($connectionName)) {
- $connectionName = 'default';
- }
- if (self::connectionExist($connectionName)) {
- return self::$_connections[$connectionName];
- }
- $connection = new DB($host, $user, $password, $dbname, $port, $socket);
- if (mysqli_connect_error()) {
- throw new DBException(sprintf("Failed to open mysqli connection [%s:%s]", mysqli_connect_errno(), mysqli_connect_error()));
- }
- self::$_connections[$connectionName] = $connection;
- return $connection;
- }
- public static function getConnection($connectionName = 'default')
- {
- if (self::connectionExist($connectionName)) {
- return self::$_connections[$connectionName];
- }
- throw new DBException(sprintf("Cant find opened connection named %s", $connectionName));
- }
- private static function connectionExist($connectionName)
- {
- if (isset(self::$_connections[$connectionName]) && self::$_connections[$connectionName] instanceof mysqli) {
- return true;
- } else {
- return false;
- }
- }
- public function addRow($tableName, $values, $replace = false)
- {
- $fields = array();
- $validValues = array();
- array_walk($values, function($value, $key) use (&$fields, &$validValues) {
- $fields[] = sprintf("`%s`", $key);
- $validValues[] = sprintf("'%s'", $this->real_escape_string($value));
- });
- $sql = sprintf("%s INTO `%s` (%s) VALUES (%s)", $replace ? "REPLACE" : "INSERT", $tableName, join(",", $fields), join(",", $validValues));
- return $this->query($sql);
- }
- }
- class DBException extends Exception {}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement