Advertisement
stuppid_bot

Обертка для работы с базой

Jan 24th, 2014
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.94 KB | None | 0 0
  1. <?php
  2.  
  3. class DB extends PDO {
  4.     private $_host = '127.0.0.1',
  5.         $_database = 'vk',
  6.         $_username = 'root',
  7.         $_password = '',
  8.         $_tablePrefix = '';
  9.  
  10.     private function __construct() {
  11.         $dsn = "mysql:dbname={$this->_database};host=" . $this->_host;
  12.         parent::__construct($dsn, $this->_username, $this->_password);
  13.         $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14.      }
  15.  
  16.      static function getInstance() {
  17.         static $db;
  18.         if ($db == null) {
  19.             $db = new self;
  20.         }
  21.         return $db;
  22.      }
  23.  
  24.      function addTablePrefix($table_name) {
  25.         return '`' . $this->_tablePrefix . $table_name . '`';
  26.      }
  27.  
  28.      function insert($table_name, $data) {
  29.         $sql = 'INSERT INTO ' . $this->addTablePrefix($table_name);    
  30.         $val = array_values($data);
  31.         // если массив ассоциативный
  32.         if ($val != $data) {
  33.             $sql .= ' (`' . implode('`,`', array_keys($data)) . '`)';
  34.         }
  35.         $sql .= ' VALUES(' . implode(',', array_fill(0, count($val), '?')) . ');';
  36.         $stmt = $this->prepare($sql);
  37.         $stmt->execute($val);
  38.         return $this->lastInsertId();
  39.     }
  40.  
  41.     function update($table_name, $data, $id, $id_name = 'id') {
  42.         $id = (int) $id;
  43.         $items = array();
  44.         foreach (array_keys($data) as $v) {
  45.             $items[] = "`$v`=?";
  46.         }
  47.         $items = implode(',', $items);
  48.         $sql = "UPDATE {$this->addTablePrefix($table_name)} SET $items WHERE `$id_name`=$id;";
  49.         $stmt = $this->prepare($sql);
  50.         $stmt->execute(array_values($data));
  51.         return $stmt->rowCount();
  52.     }
  53.  
  54.     function delete($table_name, $id, $id_name = 'id') {
  55.         $id = (int) $id;
  56.         $sql = "DELETE FROM {$this->addTablePrefix($table_name)} WHERE `$id_name`=$id;";
  57.         $stmt = $this->query($sql);
  58.         return $stmt->rowCount();
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement