X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/f988982ad609256e3bbbb8a41ca7c7b0b3b4fb74..05c560470887c86a30c82360d7be5caf0de1baa4:/database.inc.php diff --git a/database.inc.php b/database.inc.php index 464126b..12a82eb 100644 --- a/database.inc.php +++ b/database.inc.php @@ -24,22 +24,46 @@ class DB function _value($val, &$params) { + if (is_array($val)) { + $sql = array_shift($val); + $params = array_merge($params, $val); + return $sql; + } + $params[] = $val; return '?'; } - function insert($table, $row) + function set($table, $row, $filter = NULL) { $params = []; - $cols = []; - foreach ($row as $col => $val) { - $cols[] = $this->_value($val, $params); + if (is_null($filter)) { + $cols = []; + foreach ($row as $col => $val) { + $cols[] = $this->_value($val, $params); + } + $sql = sprintf('INSERT INTO %s (%s) VALUES (%s) RETURNING id', + '"'.$table.'"', + implode(', ', array_keys($row)), + implode(', ', $cols) + ); + } + else { + $sql = 'UPDATE "'.$table.'"'; + $cols = []; + foreach ($row as $col => $val) { + $cols[] = $col . ' = ' . $this->_value($val, $params); + } + + $sql .= ' SET ' . implode(', ', $cols); + if (is_array($filter)) { + $sql .= ' WHERE ' . array_shift($filter); + $params = array_merge($params, $filter); + } + else { + $sql .= ' ' . $filter; + } } - $sql = sprintf('INSERT INTO %s (%s) VALUES (%s)', - '"'.$table.'"', - implode(', ', array_keys($row)), - implode(', ', $cols) - ); return $this->query($sql, $params); } }