public function set($Field, $Value = '', $EscapeString = true, $CreateNewNamedParameter = true)
{
$Field = Gdn_Format::objectAsArray($Field);
if (!is_array($Field)) {
$Field = array($Field => $Value);
}
foreach ($Field as $f => $v) {
if (is_array($v) || is_object($v)) {
throw new Exception('Invalid value type (' . gettype($v) . ') in INSERT/UPDATE statement.', 500);
} else {
if (in_array(substr($f, -1), ['+', '-'], true)) {
// This is an increment/decrement.
$op = substr($f, -1);
$f = substr($f, 0, -1);
$parameter = $this->namedParameter($f, $CreateNewNamedParameter);
$this->_NamedParameters[$parameter] = $v;
$this->_Sets[$this->escapeIdentifier($f)] = $this->escapeIdentifier($f) . " {$op} " . $parameter;
} elseif ($EscapeString) {
$NamedParameter = $this->namedParameter($f, $CreateNewNamedParameter);
$this->_NamedParameters[$NamedParameter] = $v;
$this->_Sets[$this->escapeIdentifier($f)] = $NamedParameter;
} else {
$this->_Sets[$this->escapeIdentifier($f)] = $v;
}
}
}
return $this;
}