Advertisement
stuppid_bot

Untitled

Jun 13th, 2014
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.17 KB | None | 0 0
  1. <?php
  2.  
  3. class DB_Record extends Object {
  4.     protected $table;
  5.     protected $primaryKey;
  6.     protected $primaryId;
  7.     protected $columns;
  8.  
  9.     public function __construct($table) {
  10.         $this->table = $table;
  11.         $stm = db::query("DESCRIBE `{$this->table}`");
  12.         $rows = $stm->fetchAll(PDO::FETCH_OBJ);
  13.         // echo '<pre>';
  14.         // var_dump($rows);
  15.         // echo '</pre>';
  16.         foreach ($rows as $row) {
  17.             if ($row->Key == 'PRI') {
  18.                 $this->primaryKey = $row->Field;
  19.             }
  20.             $this->columns[] = $row->Field;
  21.         }
  22.     }
  23.  
  24.     public function load($id) {
  25.         if (preg_match('/^[1-9]\d*$/', $id)) {
  26.             $stm = db::query("SELECT * FROM `{$this->table}` WHERE `{$this->primaryKey}`=$id");
  27.             $data = $stm->fetch(PDO::FETCH_ASSOC);
  28.             if (count($data)) {
  29.                 $this->data = $data;
  30.                 $this->primaryId = $id;
  31.                 return true;
  32.             }
  33.         }
  34.         return false;
  35.     }
  36.  
  37.     public function save() {
  38.         $data = $this->matchColumns();
  39.         if ($this->primaryId) {
  40.             $sql = "UPDATE `{$this->table}` SET ";
  41.             $parts = array();
  42.             foreach ($data as $k => $v) {
  43.                 $parts[] = "`$k`=:$k";
  44.             }
  45.             $sql .= implode(',', $parts) . " WHERE `{$this->primaryKey}`={$this->primaryId}";
  46.             // echo $sql . '<br>';
  47.             $stm = db::prepare($sql);
  48.             $stm->execute($data);
  49.             return (bool) $stm->rowCount();
  50.         }
  51.         $sql = "INSERT INTO `{$this->table}`";
  52.         $sql .= ' (`' . implode('`,`', array_keys($data)) . '`)';
  53.         $sql .= ' VALUES (' . substr(str_repeat('?,', count($data)), 0 , -1) . ')';
  54.         // echo $sql . '<br>';
  55.         $stm = db::prepare($sql);
  56.         $stm->execute(array_values($data));
  57.         return db::lastInsertId();
  58.     }
  59.  
  60.     protected function matchColumns() {
  61.         $ret = array();
  62.         foreach ($this->columns as $column) {
  63.             if (isset($this->data[$column])) {
  64.                 $ret[$column] = $this->data[$column];
  65.             }
  66.         }
  67.         return $ret;
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement