d54354d18bba0590b73456b8ebe66e99d2ff2272
[memberdb.git] / include / database.php
1 <?php
2
3 use MemberDB\Config\Config;
4 use MemberDB\Database\Db;
5
6 function db_connect()
7 {
8     $config = Config::getInstance();
9     $success = Db::connect(
10         'mysql:host=' . $config->get('database')['host'] . ';dbname=' . $config->get('database')['database'] . ';charset=utf8',
11         $config->get('database')['user'],
12         $config->get('database')['password']
13     );
14     if (!$success) {
15         echo '<html><body>Konnte keine Verbindung zur Datenbank herstellen.</body></html>';
16         exit();
17     }
18
19     Db::getPdo()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
20     Db::getPdo()->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
21 }
22
23 // select one row
24 function db_select_single($query, $bindings = [])
25 {
26     return Db::selectOne($query, $bindings);
27 }
28
29 // select multiple rows
30 function db_select_multi($query, $bindings = [])
31 {
32     return Db::select($query, $bindings);
33 }
34
35 // insert one row
36 function db_insert($table, $fields, $ignore = false)
37 {
38     $query = sprintf('INSERT %s INTO %s', ($ignore ? 'IGNORE' : ''), $table);
39
40     $replacements = [];
41     foreach ($fields as $field) {
42         $replacements[] = ':' . $field;
43     }
44
45     $query .= ' (`' . join('`,`', array_keys($fields)) . '`) VALUES (' . join(',', $replacements) . ')';
46
47     return Db::insert($query, $fields);
48 }
49
50 // get automatically generated id of last record
51 function db_insert_id($name = 'id')
52 {
53     return Db::getPdo()->lastInsertId($name);
54 }
55
56 // begin transaction
57 function db_begin()
58 {
59     return Db::getPdo()->beginTransaction();
60 }
61
62 // commit transaction
63 function db_commit()
64 {
65     return Db::getPdo()->commit();
66 }
67
68 // rollback transaction
69 function db_rollback()
70 {
71     Db::getPdo()->rollBack();
72 }
73
74 // update multiple rows
75 function db_update($table, $fields, $where = '', $special = '', $limit = 'LIMIT 1')
76 {
77     $query = 'UPDATE `' . $table . '` SET ';
78
79     foreach ($fields as $field) {
80         $query .= '`' . $field . '` = ? ';
81     }
82
83     $query .= $special . ' ';
84     if (!empty($where)) {
85         $query .= 'WHERE ' . $where . ' ';
86     }
87
88     $query .= $limit;
89
90     return Db::update($query, array_values($fields));
91 }
92
93 // delete one row
94 function db_delete($table, $where, $bindings = [])
95 {
96     $query = sprintf('DELETE FROM `%s` WHERE %s LIMIT 1', $table, $where);
97
98     return Db::delete($query, $bindings);
99 }
100
101 // get error message
102 function db_error()
103 {
104     return Db::getError()[2];
105 }
106
107 function db_unixtime2date($unixtime)
108 {
109     return strftime('%Y-%m-%d', $unixtime);
110 }
111
112 function db_date2unixtime($date)
113 {
114     return strtotime($date);
115 }
116
117 function db_unixtime2datetime($unixtime)
118 {
119     return strftime('%Y-%m-%d %H:%M:%S', $unixtime);
120 }