Advertisement
Guest User

Untitled

a guest
Jan 14th, 2013
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.91 KB | None | 0 0
  1. <?php
  2.  
  3. class Database
  4. {
  5.  
  6.     protected static $instance = null;
  7.  
  8.     final private function __construct()
  9.     {
  10.        
  11.     }
  12.  
  13.     final private function __clone()
  14.     {
  15.        
  16.     }
  17.  
  18.     /**
  19.      * @return PDO
  20.      */
  21.     public static function instance()
  22.     {
  23.         if (self::$instance === null) {
  24.             try {
  25.                 self::$instance = new PDO(DB_DSN, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
  26.                 self::$instance->setAttribute(PDO::ATTR_PERSISTENT, true);
  27.                 /*                 * ************************** Persient tilkoblinger * */
  28.                 #self::$instance->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'"); /****** UTF-8                 **/
  29.                self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  30.                 /*                 * *********** Feilmeldingsmodus     * */
  31.                 self::$instance->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
  32.                 /*                 * ************ Mysql buffered query  * */
  33.                 self::$instance->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
  34.                 /*                 * ****** Default fetch metode  * */
  35.             } catch (PDOException $e) {
  36.                 die('Kunne ikke opprette tilkobling til databasen!');
  37.             }
  38.         }
  39.         return self::$instance;
  40.     }
  41.  
  42.     /**
  43.      * Update
  44.      *
  45.      * @access public
  46.      */
  47.     public static function update($table, $values, $where)
  48.     {
  49.         try {
  50.             if (gettype($values) !== 'array') {
  51.                 exit('Upt: Param må være aray!');
  52.             }
  53.             $sql = 'UPDATE ' . $table . ' SET ';
  54.             $fields = array();
  55.             foreach ($values as $key => $value) {
  56.                 if (gettype($value) === 'string')
  57.                     $y = '\'' . $value . '\'';
  58.                 array_push($fields, ($key . '=' . $value));
  59.             }
  60.             $update = implode(', ', $fields);
  61.             $sql = $sql . $update . ' WHERE ' . $where;
  62.             return self::$instance->query($sql);
  63.         } catch (Exception $e) {
  64.             return $e->getMessage() . ':' . $e->getLine();
  65.         }
  66.     }
  67.  
  68.     /**
  69.      * @return PDOStatement
  70.      */
  71.     public static function q($query)
  72.     {
  73.         if (func_num_args() == 1) {
  74.             return self::instance()->query($query);
  75.         }
  76.         $args = func_get_args();
  77.         return self::instance()->query(self::autoQuote(array_shift($args), $args));
  78.     }
  79.  
  80.     public static function x($query)
  81.     {
  82.         if (func_num_args() == 1) {
  83.             return self::instance()->exec($query);
  84.         }
  85.         $args = func_get_args();
  86.         return self::instance()->exec(self::autoQuote(array_shift($args), $args));
  87.     }
  88.  
  89.     public static function autoQuote($query, array $args)
  90.     {
  91.         $i = strlen($query) - 1;
  92.         $c = count($args);
  93.         while ($i--) {
  94.             if ('?' === $query[$i] && false !== $type = strpos('sia', $query[$i + 1])) {
  95.                 if (--$c < 0) {
  96.                     throw new InvalidArgumentException('For få parametere!');
  97.                 }
  98.                 if (0 === $type) {
  99.                     $replace = self::instance()->quote($args[$c]);
  100.                 }
  101.                 elseif (1 === $type) {
  102.                     $replace = intval($args[$c]);
  103.                 }
  104.                 elseif (2 === $type) {
  105.                     foreach ($args[$c] as &$value) {
  106.                         $value = self::instance()->quote($value);
  107.                     }
  108.                     $replace = '(' . implode(',', $args[$c]) . ')';
  109.                 }
  110.                 $query = substr_replace($query, $replace, $i, 2);
  111.             }
  112.         }
  113.         if ($c > 0) {
  114.             throw new InvalidArgumentException('For mange parametere!');
  115.         }
  116.         return $query;
  117.     }
  118.  
  119.     public static function beginTransaction()
  120.     {
  121.         return self::instance()->beginTransaction();
  122.     }
  123.  
  124.     public static function commit()
  125.     {
  126.         return self::instance()->commit();
  127.     }
  128.  
  129.     public static function errorCode()
  130.     {
  131.         return self::instance()->errorCode();
  132.     }
  133.  
  134.     public static function errorInfo()
  135.     {
  136.         return self::instance()->errorInfo();
  137.     }
  138.  
  139.     public static function exec($statement)
  140.     {
  141.         return self::instance()->exec($statement);
  142.     }
  143.  
  144.     public static function getAttribute($attribute)
  145.     {
  146.         return self::instance()->getAttribute($attribute);
  147.     }
  148.  
  149.     public static function getAvailableDrivers()
  150.     {
  151.         return self::instance()->getAvailableDrivers();
  152.     }
  153.  
  154.     public static function inTransaction()
  155.     {
  156.         return self::instance()->inTransaction();
  157.     }
  158.  
  159.     public static function lastInsertId($name = NULL)
  160.     {
  161.         return self::instance()->lastInsertId($name);
  162.     }
  163.  
  164.     public static function prepare($statement, $driver_options = array())
  165.     {
  166.         return self::instance()->prepare($statement, $driver_options);
  167.     }
  168.  
  169.     public static function query()
  170.     {
  171.         $arguments = func_get_args();
  172.         return call_user_func_array(array(self::instance(), 'query'), $arguments);
  173.     }
  174.  
  175.     public static function quote($string, $parameter_type = PDO::PARAM_STR)
  176.     {
  177.         return self::instance()->quote($string, $parameter_type);
  178.     }
  179.  
  180.     public static function rollBack()
  181.     {
  182.         return self::instance()->rollBack();
  183.     }
  184.  
  185.     public static function setAttribute($attribute, $value)
  186.     {
  187.         return self::instance()->setAttribute($attribute, $value);
  188.     }
  189.  
  190.     public static function Rows()
  191.     {
  192.         $row = self::instance()->query('SELECT found_rows() AS rows');
  193.         foreach ($row->fetchAll(PDO::FETCH_OBJ) as $obj)
  194.             $rowsAntall = $obj->rows;
  195.         $row->closeCursor();
  196.         return $rowsAntall;
  197.     }
  198.  
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement