public function execute() { if (isset($this->orderby)) { $this->orderbySQL = sprintf('ORDER BY %s', $this->orderby); } if (isset($this->paging)) { $this->limitSQL = sprintf('LIMIT %d,%d', $this->paging->offset, $this->paging->limit); } if (isset($this->where)) { $this->whereSQL = sprintf('WHERE %s', $this->where); } if (isset($this->data)) { $columns = []; $bindings = []; foreach ($this->data as $key => $value) { $columns[] = SqlQuery::validateColumn($key) . ' = ?'; $bindings[] =& $value; } // prepend bindings because SET comes before WHERE $this->bindings = array_merge($bindings, $this->bindings); $this->setSQL = sprintf('SET %s', implode(',', $columns)); } switch ($this->query_type) { case 'update': $sql = sprintf('UPDATE %s %s %s', $this->table_name, $this->setSQL, $this->whereSQL); break; case 'select': default: $sql = sprintf('SELECT * FROM %s %s %s %s', $this->table_name, $this->whereSQL, $this->orderbySQL, $this->limitSQL); } if (isset($this->paging) && !isset($this->paging->total_records)) { $this->paging->total_records = SqlQuery::getRecordCount($this->db, $this->table_name, $this->whereSQL, $this->bindings, $this->types); } //dbg($sql); //var_dump($this->bindings); return SqlQuery::executeSQL($this->db, $sql, $this->bindings, $this->types); }