Add the following features:
[Project_webapp.git] / lib / db.php
CommitLineData
fb6aedc2
JB
1<?php
2
3/**
4 * [CustomDB description]
5 */
6class CustomDB
7{
8 private $connection;
9 public $connected;
10 private $current_pquery;
11 private $current_stmt;
a96fefe1 12 private $current_result;
fb6aedc2
JB
13
14 /**
15 * [__construct description]
16 * @param [type] $host [description]
17 * @param [type] $username [description]
18 * @param [type] $password [description]
19 * @param [type] $dbname [description]
20 */
21 public function __construct($host, $username, $password, $dbname)
22 {
23 $connection = new mysqli($host, $username, $password, $dbname);
24 $this->connection = $connection;
25
26 if (!$this->connection->connect_errno) {
27 $this->connected = true;
28 } else {
a96fefe1 29 die('Fail to connect to the RDBMS.');
fb6aedc2
JB
30 }
31
32 return $this->connection;
33 }
34
a96fefe1
JB
35 /* public function __destruct()
36 {
37 $this->close();
38 } */
39
fb6aedc2
JB
40 /**
41 * [close description]
42 * @return [type] [description]
43 */
44 public function close()
45 {
46 if ($this->connected && $this->connection->close()) {
47 $this->connected = false;
48 } else {
a96fefe1 49 die('Fail to close the connection to the RDBMS.');
fb6aedc2
JB
50 }
51 }
52
53 /**
54 * [query description]
55 * @param [type] $sql_query [description]
56 * @return [type] [description]
57 */
58 public function query($sql_query)
59 {
a96fefe1 60 if ($this->connected && !($this->current_result = $this->connection->query($sql_query))) {
b5f60f89 61 echo "Fail to execute the SQL query : " . $sql_query . "<br>";
fb6aedc2 62 }
a96fefe1 63 return $this->current_result;
fb6aedc2
JB
64 }
65
66 /**
67 * [prepare_query description]
68 * @param [type] $prepared_query [description]
69 * @return [type] [description]
70 */
71 public function prepare_query($prepared_query)
72 {
73 $this->current_pquery = $prepared_query;
74 if ($this->connected && !($this->current_stmt = $this->connection->prepare($this->current_pquery))) {
75 // Empty the currently stored prepared query in the failure case
76 $this->current_pquery = "";
b5f60f89 77 echo "Fail to prepare SQL query : (" . $this->connection->errno . ") " . $this->connection->error . " - " . $this->current_pquery . "<br>";
fb6aedc2
JB
78 }
79 return $this->current_stmt;
80 }
81
82 /**
83 * [prepared_query_bind_param description]
84 * @param [type] $params [description]
85 * @return [type] [description]
86 */
a96fefe1 87 public function prepared_query_bind_param($types, $params)
fb6aedc2 88 {
a96fefe1 89 $rt_val = $this->current_stmt->bind_param($types, ...$params);
fb6aedc2 90 if (!$rt_val) {
b5f60f89 91 echo "Fail to link parameters to SQL query : (" . $this->current_stmt->errno . ") " . $this->current_stmt->error . " - " . $this->current_pquery . "<br>";
fb6aedc2
JB
92 }
93 return $rt_val;
94 }
95
96 /**
97 * [run_prepared_query description]
98 * @return [type] [description]
99 */
100 public function run_prepared_query()
101 {
102 $rt_val = $this->current_stmt->execute();
103 if (!$rt_val) {
b5f60f89 104 echo "Fail to execute SQL query : (" . $this->current_stmt->errno . ") " . $this->current_stmt->error . " - " . $this->current_pquery . "<br>";
fb6aedc2
JB
105 }
106 return $rt_val;
107 }
108
a96fefe1
JB
109 public function get_pquery_result()
110 {
111 $rt_val = $this->current_result = $this->current_stmt->get_result();
112 if (!$rt_val) {
113 echo "Fail to fill SQL query result : (" . $this->current_stmt->errno . ") " . $this->current_stmt->error . " - " . $this->current_pquery . "<br>";
114 }
115 return $rt_val;
116 }
117
118 public function get_result_array()
119 {
120 $rt_val = $this->current_result->fetch_array();
121 if (!$rt_val) {
122 echo "Fail to build SQL query result array : (" . $this->current_stmt->errno . ") " . $this->current_stmt->error . " - " . $this->current_pquery . "<br>";
123 }
124 return $rt_val;
125 }
126
fb6aedc2
JB
127 /**
128 * [close_prepared_query description]
129 * @return [type] [description]
130 */
131 public function close_prepared_query()
132 {
133 $rt_val = $this->current_stmt->close();
134 if (!$rt_val) {
b5f60f89 135 echo "Fail to close SQL query : (" . $this->current_stmt->errno . ") " . $this->current_stmt->error . " - " . $this->current_pquery . "<br>";
fb6aedc2
JB
136 }
137 return $rt_val;
138 }
139}
140?>