issue: database insert method to keep array values
[minimedit.git] / database.inc.php
1 <?php
2 $dsn = require '.dbconfig.inc.php';
3 $Db = new DB($dsn);
4
5 class DB
6 {
7         public $dbh;
8
9         function __construct($config, $options = [])
10         {
11                 $options += [
12                         PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
13                         PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
14                 ];
15                 $this->dbh = new PDO($config, NULL, NULL, $options);
16         }
17
18         function query($sql, $params = [])
19         {
20                 $stmt = $this->dbh->prepare($sql);
21                 $stmt->execute($params);
22                 return $stmt;
23         }
24
25         function _value($val, &$params)
26         {
27                 $params[] = $val;
28                 return '?';
29         }
30
31         function insert($table, $row)
32         {
33                 $params = [];
34                 $cols = [];
35                 foreach ($row as $col => $val) {
36                         $cols[] = $this->_value($val, $params);
37                 }
38                 $sql = sprintf('INSERT INTO %s (%s) VALUES (%s)',
39                         '"'.$table.'"',
40                         implode(', ', array_keys($row)),
41                         implode(', ', $cols)
42                 );
43                 return $this->query($sql, $params);
44         }
45 }