Example #1
0
 private function _sqlUpdate($args)
 {
     //validations
     if (!is_array($args['data'])) {
         parent::exception("Invalid data argument. Must be an array!", __METHOD__);
     }
     $data = array();
     foreach ($this->cols() as $column) {
         if (array_key_exists($column, $args['data'])) {
             $data[$column] = $args['data'][$column];
         }
     }
     if (empty($data)) {
         parent::exception("Invalid update data!", __METHOD__);
     }
     //create sql query
     $table = $this->quote($args['table']);
     $sql = "UPDATE {$table}";
     $params = array();
     if (isset($args['join'])) {
         foreach ($args['join'] as $join) {
             $sql .= ' ' . $join['sql'];
             $params = $this->_addParameters($params, $join['params']);
         }
     }
     foreach (array_keys($data) as $col) {
         $columns[] = $this->quote($col) . ' = ?';
     }
     $columns = implode(', ', $columns);
     $sql .= " SET {$columns}";
     $params = $this->_addParameters($params, array_values($data));
     // Process WHERE conditions
     if (isset($args['where']['sql'])) {
         $sql .= " WHERE {$args['where']['sql']}";
         $params = $this->_addParameters($params, $args['where']['params']);
     }
     return array($sql, $params);
 }