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)',
+ '"'.$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);
}
}