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);
}
}
if ($_POST) {
$html = nl2br(htmlspecialchars($_POST['body']));
$html = empty($html) ? NULL : "<p>$html</p>";
- $query = $Db->insert('issues', [
+ $query = $Db->set('issues', [
'page' => $Page,
'subject' => $_POST['subject'],
'body' => $html,
try {
$html = nl2br(htmlspecialchars($_POST['reply']));
$html = "<p>$html</p>";
- $query = $Db->insert('comments', [
+ $query = $Db->set('comments', [
'page' => $Page,
'message' => $html,
'author' => $User->login,
throw new Exception('Fout bij opslaan');
}
if (@list ($cat, $issue) = explode('/', $Page) and ctype_digit($issue)) {
- $Db->query(
- 'UPDATE issues SET updated = now() WHERE page = ? AND id = ?',
- [$cat, $issue]
- );
+ $row = ['updated' => ['now()']];
+ $Db->set('issues', $row, ['page = ? AND id = ?', $cat, $issue]);
}
$_POST['reply'] = NULL;
}