Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class DB_Record extends Object {
- protected $table;
- protected $primaryKey;
- protected $primaryId;
- protected $columns;
- public function __construct($table) {
- $this->table = $table;
- $stm = db::query("DESCRIBE `{$this->table}`");
- $rows = $stm->fetchAll(PDO::FETCH_OBJ);
- // echo '<pre>';
- // var_dump($rows);
- // echo '</pre>';
- foreach ($rows as $row) {
- if ($row->Key == 'PRI') {
- $this->primaryKey = $row->Field;
- }
- $this->columns[] = $row->Field;
- }
- }
- public function load($id) {
- if (preg_match('/^[1-9]\d*$/', $id)) {
- $stm = db::query("SELECT * FROM `{$this->table}` WHERE `{$this->primaryKey}`=$id");
- $data = $stm->fetch(PDO::FETCH_ASSOC);
- if (count($data)) {
- $this->data = $data;
- $this->primaryId = $id;
- return true;
- }
- }
- return false;
- }
- public function save() {
- $data = $this->matchColumns();
- if ($this->primaryId) {
- $sql = "UPDATE `{$this->table}` SET ";
- $parts = array();
- foreach ($data as $k => $v) {
- $parts[] = "`$k`=:$k";
- }
- $sql .= implode(',', $parts) . " WHERE `{$this->primaryKey}`={$this->primaryId}";
- // echo $sql . '<br>';
- $stm = db::prepare($sql);
- $stm->execute($data);
- return (bool) $stm->rowCount();
- }
- $sql = "INSERT INTO `{$this->table}`";
- $sql .= ' (`' . implode('`,`', array_keys($data)) . '`)';
- $sql .= ' VALUES (' . substr(str_repeat('?,', count($data)), 0 , -1) . ')';
- // echo $sql . '<br>';
- $stm = db::prepare($sql);
- $stm->execute(array_values($data));
- return db::lastInsertId();
- }
- protected function matchColumns() {
- $ret = array();
- foreach ($this->columns as $column) {
- if (isset($this->data[$column])) {
- $ret[$column] = $this->data[$column];
- }
- }
- return $ret;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement