2 $dsn = require '.dbconfig.inc.php';
9 function __construct($config, $options = [])
12 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
13 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
15 $this->dbh = new PDO($config, NULL, NULL, $options);
18 function query($sql, $params = [])
20 $stmt = $this->dbh->prepare($sql);
21 $stmt->execute($params);
25 function _value($val, &$params)
28 $sql = array_shift($val);
29 $params = array_merge($params, $val);
32 elseif (is_bool($val)) {
33 return $val ? 'TRUE' : 'FALSE';
40 function set($table, $row, $filter = NULL)
43 if (is_null($filter)) {
45 foreach ($row as $col => $val) {
46 $cols[] = $this->_value($val, $params);
48 $sql = sprintf('INSERT INTO %s (%s) VALUES (%s)',
50 implode(', ', array_keys($row)),
55 $sql = 'UPDATE "'.$table.'"';
57 foreach ($row as $col => $val) {
58 $cols[] = $col . ' = ' . $this->_value($val, $params);
61 $sql .= ' SET ' . implode(', ', $cols);
62 if (is_array($filter)) {
63 $sql .= ' WHERE ' . array_shift($filter);
64 $params = array_merge($params, $filter);
67 $sql .= ' ' . $filter;
70 $sql .= ' RETURNING *';
71 return $this->query($sql, $params);