Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.99 KB | None | 0 0
  1. <?php
  2.  
  3. $testConnection = DB::openConnection('default', 'localhost', 'root', '1234', 'testdb');
  4.  
  5. $test = new TestClass();
  6. echo $test->sayHello() . PHP_EOL;
  7.  
  8. $addRowTest = new AddRowTest();
  9.  
  10. $addRowTest->addRow('test', array(
  11.     'login' => 'rav',
  12.     'data'  => "some sor't of data",
  13. ));
  14.  
  15. var_dump($addRowTest->getRow());
  16.  
  17.  
  18.  
  19. class AddRowTest
  20. {
  21.     private function createTable()
  22.     {
  23.         DB::getConnection()->query("CREATE TABLE IF NOT EXISTS `test` (`login` VARCHAR(255), `data` TEXT) ENGINE=InnoDB");
  24.     }
  25.  
  26.     public function addRow($tableName, $values = array())
  27.     {
  28.         $this->createTable();
  29.  
  30.         DB::getConnection()->addRow($tableName, $values);
  31.     }
  32.  
  33.     public function getRow()
  34.     {
  35.         $stmt = DB::getConnection()->prepare("SELECT * FROM `test` WHERE `login`=?");
  36.  
  37.         $login = 'rav';
  38.         $stmt->bind_param('s', $login);
  39.  
  40.         if ($stmt->execute()) {
  41.             $res = $stmt->get_result();
  42.  
  43.             return $res->fetch_assoc();
  44.         }
  45.  
  46.         return false;
  47.     }
  48. }
  49.  
  50. class TestClass
  51. {
  52.     public function sayHello()
  53.     {
  54.         $res = DB::getConnection()->query("SELECT 'hello'");
  55.  
  56.         return array_shift($res->fetch_row());
  57.     }
  58. }
  59.  
  60. class DB extends mysqli
  61. {
  62.     private static $_connections = array();
  63.    
  64.     private function __construct($host, $user, $password, $dbname, $port, $socket) {
  65.         parent::__construct($host, $user, $password, $dbname, $port, $socket);
  66.     }
  67.    
  68.     public static function openConnection($connectionName, $host, $user, $password = '', $dbname = '', $port = 3306, $socket = null)
  69.     {
  70.         if (empty($connectionName)) {
  71.             $connectionName = 'default';
  72.         }
  73.         if (self::connectionExist($connectionName)) {
  74.             return self::$_connections[$connectionName];
  75.         }
  76.         $connection = new DB($host, $user, $password, $dbname, $port, $socket);
  77.  
  78.         if (mysqli_connect_error()) {
  79.             throw new DBException(sprintf("Failed to open mysqli connection [%s:%s]", mysqli_connect_errno(), mysqli_connect_error()));
  80.         }
  81.  
  82.         self::$_connections[$connectionName] = $connection;
  83.  
  84.         return $connection;
  85.     }
  86.  
  87.     public static function getConnection($connectionName = 'default')
  88.     {
  89.         if (self::connectionExist($connectionName)) {
  90.             return self::$_connections[$connectionName];
  91.         }
  92.  
  93.         throw new DBException(sprintf("Cant find opened connection named %s", $connectionName));
  94.        
  95.     }
  96.  
  97.     private static function connectionExist($connectionName)
  98.     {
  99.         if (isset(self::$_connections[$connectionName]) && self::$_connections[$connectionName] instanceof mysqli) {
  100.             return true;
  101.         } else {
  102.             return false;
  103.         }
  104.     }
  105.  
  106.     public function addRow($tableName, $values, $replace = false)
  107.     {
  108.         $fields      = array();
  109.         $validValues = array();
  110.  
  111.         array_walk($values, function($value, $key) use (&$fields, &$validValues) {
  112.             $fields[] = sprintf("`%s`", $key);
  113.             $validValues[] = sprintf("'%s'", $this->real_escape_string($value));
  114.         });
  115.  
  116.         $sql = sprintf("%s INTO `%s` (%s) VALUES (%s)", $replace ? "REPLACE" : "INSERT", $tableName, join(",", $fields), join(",", $validValues));
  117.        
  118.         return $this->query($sql);
  119.     }
  120. }
  121.  
  122. class DBException extends Exception {}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement