Advertisement
Guest User

Untitled

a guest
Mar 15th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.88 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4. * Created by PhpStorm.
  5. * User: Tim
  6. * Date: 16-2-2016
  7. * Time: 13:27
  8. */
  9.  
  10. class Database
  11. {
  12. /**
  13. * @var string
  14. */
  15. private $host;
  16. /**
  17. * @var string
  18. */
  19. private $name;
  20. /**
  21. * @var string
  22. */
  23. private $user;
  24. /**
  25. * @var string
  26. */
  27. private $pass;
  28. /**
  29. * @var object
  30. */
  31. private $db;
  32. /**
  33. * @var bool
  34. */
  35. private static $connection = false;
  36. /**
  37. * @var string
  38. */
  39. public $status;
  40.  
  41.  
  42. /**
  43. * Database constructor.
  44. * @param $db_host
  45. * @param $db_name
  46. * @param $db_user
  47. * @param $db_pass
  48. */
  49. public function __construct($db_host, $db_name, $db_user, $db_pass)
  50. {
  51. $this->host = $db_host;
  52. $this->name = $db_name;
  53. $this->user = $db_user;
  54. $this->pass = $db_pass;
  55.  
  56. $this->connect();
  57.  
  58. }
  59.  
  60. public static function getInstance($db_host, $db_name, $db_user, $db_pass)
  61. {
  62. if (self::$connection == false) {
  63.  
  64. self::$connection = new Database($db_host, $db_name, $db_user, $db_pass);
  65. }
  66. return self::$connection;
  67.  
  68. }
  69.  
  70. /**
  71. * @return string
  72. */
  73. public function connect()
  74. {
  75. try {
  76. $this->db = new PDO ("mysql:host=$this->host; dbname=$this->name", $this->user, $this->pass);
  77.  
  78. $this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  79. $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  80.  
  81. //echo "yee, db connectie gelukt";
  82. $this->status = "Yea, db connectie gelukt";
  83. } catch (PDOExeption $error) {
  84. return $error->getfile() . $error->getline();
  85. $this->status = "Oeps, er is iets mis gegaan";
  86. }
  87. }
  88.  
  89. /**
  90. * @param $query
  91. * @return mixed
  92. */
  93. public function query($query)
  94. {
  95. $select = $this->db->prepare($query);
  96. $select->execute();
  97. $results = $select->fetchAll(PDO::FETCH_ASSOC);
  98.  
  99. return $results;
  100. }
  101.  
  102. /**
  103. * @param $kolommen
  104. * @param $queryLong
  105. * @param array $where
  106. * @return mixed
  107. */
  108. public function selectAdvanced($kolommen, $queryLong, $where = [])
  109. {
  110. $query = "SELECT " . implode(", ", $kolommen) . " FROM ";
  111. $query .= $queryLong;
  112.  
  113. $where_keys = array_keys($where);
  114. foreach ($where_keys as $k => $v) {
  115. $where_keys[$k] = "$v=:$v";
  116. }
  117. $query .= " WHERE " . implode(" AND ", $where_keys);
  118. //echo $query; exit;
  119.  
  120. $select = $this->db->prepare($query);
  121.  
  122. $arr = array_merge($where);
  123. foreach ($arr as $key => &$val) {
  124. $select->bindParam(":" . $key, $val);
  125. }
  126.  
  127. $select->execute();
  128. $results = $select->fetchAll(PDO::FETCH_ASSOC);
  129.  
  130. return $results;
  131. }
  132.  
  133. /**
  134. * @param $kolom
  135. * @param $table
  136. * @param array $params
  137. * @return mixed
  138. */
  139. public function select($kolom, $table, $params = [])
  140. {
  141. $where = "";
  142. if (!empty($params)) {
  143. $where = " WHERE ";
  144. foreach ($params as $operator => $params) {
  145. $where_keys = array_keys($params);
  146. foreach ($where_keys as $k => $v) {
  147. $where_keys[$k] = "$v" . $operator . ":$v";
  148. }
  149. }
  150. $where .= implode(" AND ", $where_keys);
  151.  
  152. }
  153.  
  154. $select = $this->db->prepare("SELECT " . $kolom . " FROM " . $table . $where);
  155.  
  156. // bindParam statements
  157. foreach ($params as $key => &$val) {
  158. $select->bindParam(":" . $key, $val);
  159. }
  160.  
  161. $select->execute();
  162. $results = $select->fetchAll(PDO::FETCH_ASSOC);
  163.  
  164. return $results;
  165. }
  166.  
  167. /**
  168. * @param $table
  169. * @param $arr
  170. * @param bool $is_replace
  171. * @return mixed
  172. */
  173. public function insert($table, $arr, $is_replace = false)
  174. {
  175. if ($is_replace)
  176. $query = "REPLACE";
  177. else
  178. $query = "INSERT";
  179.  
  180. $arr_keys = array_keys($arr);
  181. foreach ($arr_keys as $k => $v) {
  182. $arr_keys[$k] = "$v=:$v";
  183. }
  184.  
  185. $query .= " INTO $table SET " . implode(", ", $arr_keys);
  186.  
  187. $insert = $this->db->prepare($query);
  188.  
  189. // bindParam statements
  190. foreach ($arr as $key => &$val) {
  191. $insert->bindParam(":" . $key, $val);
  192. }
  193. $insert->execute();
  194.  
  195. return $this->db->lastInsertId();
  196. }
  197.  
  198. /**
  199. * @param $table
  200. * @param $arr
  201. * @param array $where
  202. */
  203. public function update($table, $arr, $where = [])
  204. {
  205. $query = "UPDATE";
  206.  
  207. $arr_keys = array_keys($arr);
  208. foreach ($arr_keys as $k => $v) {
  209. $arr_keys[$k] = "$v=:$v";
  210. }
  211. $where_keys = array_keys($where);
  212. foreach ($where_keys as $k => $v) {
  213. $where_keys[$k] = "$v=:$v";
  214. }
  215.  
  216. $query .= " $table SET " . implode(", ", $arr_keys) . " WHERE " . implode(" AND ", $where_keys);
  217.  
  218. $update = $this->db->prepare($query);
  219.  
  220. // bindParam statements
  221. $arr = array_merge($arr, $where);
  222. foreach ($arr as $key => &$val) {
  223. $update->bindParam(":" . $key, $val);
  224. }
  225. $update->execute();
  226. }
  227.  
  228. /**
  229. * @param $table
  230. * @param $where
  231. * @param $what
  232. */
  233. public function delete($table, $where, $what = "")
  234. {
  235. $query = "DELETE ";
  236.  
  237. $where_keys = array_keys($where);
  238. foreach ($where_keys as $k => $v) {
  239. $where_keys[$k] = "$v=:$v";
  240. }
  241.  
  242. if (is_array($what))
  243. $what = implode(", ", $what);
  244. else
  245. $what = "";
  246.  
  247. $query .= $what . "FROM " . $table . " WHERE " . implode(" AND ", $where_keys);
  248.  
  249. $delete = $this->db->prepare($query);
  250.  
  251. // bindParam statements
  252. foreach ($where as $key => &$val) {
  253. $delete->bindParam(":" . $key, $val);
  254. }
  255. $delete->execute();
  256. }
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement