Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.59 KB | None | 0 0
  1. <?php
  2. class Db{
  3. public $server;
  4. public $user;
  5. public $password;
  6. public $database;
  7. public $sessions = array();
  8.  
  9. //Properties for Database Transactions
  10. public $foreignKeys;
  11. public $fields;
  12. public $table;
  13. public $primaryKey;
  14. public $connectedToKey;
  15. private $conn;
  16.  
  17. public function __construct(){
  18. $this->server = "localhost";
  19. $this->user = "root";
  20. $this->password = "";
  21. $this->database = "ussdvoter";
  22. //Connects to the database;
  23. $this->connectDB();
  24.  
  25. }
  26. function connectDB(){
  27. $this->conn = new mysqli($this->server, $this->user, $this->password, $this->database);
  28. if ($this->conn->connect_errno) {
  29. echo "Error connection: %s\n".$this->conn->connect_error;
  30. exit();
  31. }
  32. }
  33. //returns a count of records according to the custom query passed to the function
  34. function countCustom($query){
  35. $res = $this->conn->query($query);
  36. if($res){
  37. $q = $res->fetch_array();
  38. $cnt = $q{'cnt'};
  39. $res->close();
  40. return $cnt;
  41. }
  42. }
  43. function isValidMd5($md5 =''){
  44. return preg_match('/^[a-f0-9]{32}$/i', $md5);
  45. }
  46. function count($table, $where) {
  47. if ($where != "") $sel = "SELECT COUNT(*) AS cnt FROM ".$table." WHERE ".$where;
  48. else $sel = "SELECT COUNT(*) AS cnt FROM ".$table;
  49. $res = $this->conn->query($sel);
  50. $q = $res->fetch_array();
  51. $cnt = $q{'cnt'};
  52. $res->close();
  53. return $cnt;
  54. }
  55. //Query used by datatables to populate the table data
  56. //returns a count of records according to the custom query passed to the function
  57. function prepareStatement($query){
  58. $statement = $this->conn->prepare($query);
  59. if($statement === false) {
  60. trigger_error('SQL Error: ' . $this->conn->errno . ' ' . $this->conn->error, E_USER_ERROR);
  61. }
  62. return $statement;
  63. }
  64.  
  65. function bindParam($preparedStatement, $a_params){
  66. /* $preparedStatement->bind_param($data_type, $a_params);
  67.  
  68. /* The problem
  69.  
  70. $preparedStatement->bind_param() does not accept params array. So, how to bind params, if their number is variable, depending on user input in your application?
  71.  
  72. A workaround is to use call_user_func_array to pass dynamically the params array.*/
  73. call_user_func_array(array($preparedStatement, 'bind_param'), $a_params);
  74. }
  75. function fetchResult($preparedStatement){
  76. $preparedStatement->execute();
  77.  
  78. return $preparedStatement->get_result(); /* $statement->fetch_array(MYSQLI_ASSOC);*/
  79. }
  80. //returns a count of records according to the custom query passed to the function
  81. function getFilteredTotal(){
  82. return $this->conn->query('SELECT FOUND_ROWS()')->fetch_array();
  83. }
  84. function destroySessions(){
  85. if(!isset($_SESSION)) {
  86. session_start();
  87. }
  88. foreach($this->sessions as $to_unset => $value){
  89. unset($_SESSION[$to_unset]);
  90. }
  91. session_destroy();
  92. Redirect("index.php");
  93. }
  94. function setSessions($name, $value){
  95. if(!isset($_SESSION)) {
  96. session_start();
  97. }
  98. return $_SESSION[$name] = $value;
  99. }
  100. function getLogin($username, $password){
  101. if(!isset($_SESSION)) {
  102. session_start();
  103. }
  104. $to_add = array("id","username","access_level", "branch_number", "person_number");
  105. $password = md5($password);
  106. $results = $this->getfrec("staff", implode(",",$to_add), "username='$username' AND password='$password'", "", "");
  107. if(count($results) > 0){
  108. $_SESSION['Logged'] = true;
  109. foreach($results as $key => $value){
  110. if(!is_numeric($key)){
  111. if(in_array($key, $to_add)){
  112. $_SESSION[$key] = $value;
  113. }
  114. }
  115. }
  116. $this->setSessions("user_id", $results['id']);
  117. return $_SESSION;
  118. }
  119. return false;
  120. }
  121. function generateAddFields($fields = array(), $data = array()){
  122. $array = array();
  123. if((count($fields) <= 0) || (count($data) <= 0)) {
  124. return false;
  125. } else{
  126. foreach($fields as $field){
  127. if(array_key_exists($field, $data)){
  128. $array[$field] = $data[$field];
  129. }else{
  130. $array[$field] = "";
  131. }
  132.  
  133. }
  134. return $array;
  135. }
  136. }
  137.  
  138. function getFieldRecord($table, $field, $where, $ordby) {
  139. if ($where != "") $sel = "SELECT ".$field." FROM ".$table." WHERE ".$where;
  140. else $sel = "SELECT ".$field." FROM ".$table;
  141. if ($ordby != "") $sel = $sel." ORDER BY ".$ordby;
  142. $sele = mysql_query($sel);
  143. $res = mysql_fetch_array($sele);
  144. mysql_free_result($sele);
  145. return $res;
  146. }
  147. function countRecords($table, $where) {
  148. if ($where != "") $sel = "SELECT COUNT(*) AS cnt FROM ".$table." WHERE ".$where;
  149. else $sel = "SELECT COUNT(*) AS cnt FROM ".$table;
  150. $res = $this->conn->query($sel);
  151. if($res){
  152. $q = $res->fetch_array();
  153. $cnt = $q{'cnt'};
  154. $res->close();
  155. return $cnt;
  156. }
  157. return false;
  158. }
  159. public function sanitizeAttributes($unescaped_values) {
  160. $clean_attributes = array();
  161. // sanitize the values before submitting
  162. // Note: does not alter the actual value of each attribute
  163. foreach($unescaped_values as $key => $value){
  164. $clean_attributes[$key] = $this->escape_value($value);
  165. }
  166. return $clean_attributes;
  167. }
  168. public function escape_value( $value ) {
  169. // PHP v4.3.0 or higher
  170. // undo any magic quote effects so mysqli_real_escape_string can do the work
  171. $value = stripslashes( $value );
  172. $value = mysqli_real_escape_string($this->conn, $value);
  173.  
  174. //echo $value;
  175. return $value;
  176. }
  177. function add($table, $fields, $values){
  178. $values = $this->sanitizeAttributes($values);
  179. $fi = implode(",", $fields);
  180. $va = "";
  181. for ($i = 0; $i < count($fields); $i++) {
  182. if (substr($values{$fields[$i]}, 0, 1) == "!") $va = $va.substr($values{$fields[$i]}, 1, strlen($values{$fields[$i]}) - 1);
  183. else $va = $va."'".$values{$fields[$i]}."'";
  184. if ($i < (count($fields) - 1)) $va = $va.",";
  185. }
  186. $ins = "INSERT INTO ".$table. " (".$fi.") VALUES (".$va.")";
  187. //echo $ins;
  188. $inse = $this->conn->query($ins);
  189. if($inse){
  190. return mysqli_insert_id($this->conn);
  191. }
  192. return false;
  193. }
  194. function addMultiple($table, $fields, $values){
  195. $fi = implode(",", $fields);
  196.  
  197. $ins = "INSERT INTO ".$table. " (".$fi.") VALUES ".implode(',', $values);
  198. //echo $ins;
  199. $inse = $this->conn->query($ins);
  200. if($inse){
  201. return true;
  202. }
  203. return false;
  204. }
  205. function numberFormat($no){
  206. $format_number = number_format($no, 2, '.', ',');
  207. return $format_number;
  208. }
  209. function update_single($table, $field, $value, $where) {
  210. $value = $this->escape_value($value);
  211. $upd = "UPDATE ".$table. " SET ".$field." = '".$value."' WHERE ".$where;
  212. return $this->conn->query($upd);
  213. }
  214. function update($table, $fields, $values, $where){
  215. $va = "";
  216. $values = $this->sanitizeAttributes($values);
  217. for ($i = 0; $i < count($fields); $i++) {
  218. if (substr($values{$fields[$i]}, 0, 1) == "!") $va = $va.$fields[$i]." = ".substr($values{$fields[$i]}, 1, strlen($values{$fields[$i]}) - 1);
  219. else $va = $va.$fields[$i]." = '".$values{$fields[$i]}."'";
  220. if ($i < (count($fields) - 1)) $va = $va.",";
  221. }
  222. $upd = "UPDATE ".$table. " SET ".$va." WHERE ".$where;
  223. //echo $upd;
  224. if($this->conn->query($upd)){
  225. return true;
  226. }else {
  227. return false;
  228. }
  229.  
  230. }
  231. function getrec($table, $where, $ordby, $limit) {
  232. if ($where != "") $sel = "SELECT * FROM ".$table." WHERE ".$where;
  233. else $sel = "SELECT * FROM ".$table;
  234. if ($ordby != "") $sel = $sel." ORDER BY ".$ordby;
  235. if ($limit != "") $sel = $sel." LIMIT ".$limit;
  236. //echo $sel;
  237. $q = $this->conn->query($sel);
  238. if($q){
  239. $res = $q->fetch_array();
  240. $q->close();
  241. return $res;
  242. }
  243. return false;
  244. }
  245. function getfrec($table, $field, $where, $ordby, $limit) {
  246. if ($where != "") $sel = "SELECT ".$field." FROM ".$table." WHERE ".$where;
  247. else $sel = "SELECT ".$field." FROM ".$table;
  248. if ($ordby != "") $sel = $sel." ORDER BY ".$ordby;
  249. if ($limit != "") $sel = $sel." LIMIT ".$limit;
  250. //echo $sel;
  251. $q = $this->conn->query($sel);
  252. if($q){
  253. $res = $q->fetch_array();
  254. $q->close();
  255. return $res;
  256. }else{
  257. return false;
  258. }
  259.  
  260. }//end getfrec
  261.  
  262. function getfrecgrouped($table, $field, $where, $groupby, $limit) {
  263. if ($where != "") $sel = "SELECT ".$field." FROM ".$table." WHERE ".$where;
  264. else $sel = "SELECT ".$field." FROM ".$table;
  265. if ($groupby != "") $sel = $sel." GROUP BY ".$groupby;
  266. if ($limit != "") $sel = $sel." LIMIT ".$limit;
  267. //echo $sel;
  268. $q = $this->conn->query($sel);
  269. if($q){
  270. $res = $q->fetch_array();
  271. $q->close();
  272. return $res;
  273. }
  274. return false;
  275. }//end getfrec
  276. function getmax($table, $field, $where, $ordby, $limit) {
  277. if ($where != "") $sel = "SELECT max(".$field.") FROM ".$table." WHERE ".$where;
  278. else $sel = "SELECT max(".$field.") FROM ".$table;
  279. if ($ordby != "") $sel = $sel." ORDER BY ".$ordby;
  280. if ($limit != "") $sel = $sel." LIMIT ".$limit;
  281. $q = $this->conn->query($sel);
  282. if($q){
  283. $res = $q->fetch_array();
  284. $q->close();
  285. return $res['max('.$field.')'];
  286. }
  287. return false;
  288.  
  289. }//end getmax
  290. function getmin($table, $field, $where, $ordby, $limit) {
  291. if ($where != "") $sel = "SELECT min(".$field.") FROM ".$table." WHERE ".$where;
  292. else $sel = "SELECT min(".$field.") FROM ".$table;
  293. if ($ordby != "") $sel = $sel." ORDER BY ".$ordby;
  294. if ($limit != "") $sel = $sel." LIMIT ".$limit;
  295. $q = $this->conn->query($sel);
  296. if($q){
  297. $res = $q->fetch_array();
  298. $q->close();
  299. return $res['min('.$field.')'];
  300. }
  301. return false;
  302.  
  303. }//end getmax
  304. function getarray($table, $where, $ordby, $limit) {
  305. $res = array();
  306. $i = 0;
  307. if ($where != "") $sel = "SELECT * FROM ".$table." WHERE ".$where;
  308. else $sel = "SELECT * FROM ".$table;
  309. if ($ordby != "") $sel = $sel." ORDER BY ".$ordby;
  310. if ($limit != "") $sel = $sel." LIMIT ".$limit;
  311.  
  312. $q = $this->conn->query($sel);
  313. if($q){
  314. $res = $this->buildOut($q);
  315. $q->close();
  316. return $res;
  317. }
  318. return false;
  319. }
  320. function getfarray($table, $se, $where, $ordby, $limit) {
  321. if ($where != "") $sel = "SELECT ".$se." FROM ".$table." WHERE ".$where;
  322. else $sel = "SELECT ".$se." FROM ".$table;
  323. if ($ordby != "") $sel = $sel." ORDER BY ".$ordby;
  324. if ($limit != "") $sel = $sel." LIMIT ".$limit;
  325. //echo $sel;
  326. $q = $this->conn->query($sel);
  327. if($q){
  328. $res = $this->buildOut($q);
  329. $q->close();
  330. return $res;
  331. }
  332. }
  333. function getarrayunique($table, $where, $ordby, $limit) {
  334. $out = array();
  335. $i = 0;
  336. if ($where != "") $sel = "SELECT * FROM ".$table." WHERE ".$where;
  337. else $sel = "SELECT DISTINCT FROM ".$table;
  338. if ($ordby != "") $sel = $sel." ORDER BY ".$ordby;
  339. if ($limit != "") $sel = $sel." LIMIT ".$limit;
  340. $q = $this->conn->query($sel);
  341. if($q){
  342. $res = $this->buildOut($q);
  343. $q->close();
  344. return $res;
  345. }
  346. return false;
  347. }
  348. function getfarrayunique($table, $field, $where, $ordby, $limit){
  349. $out = array();
  350. $i = 0;
  351. if ($where != "") $sel = "SELECT DISTINCT ". $field . " FROM ".$table." WHERE ".$where;
  352. else $sel = "SELECT DISTINCT ". $field . " FROM ".$table;
  353. if ($ordby != "") $sel = $sel." ORDER BY ".$ordby;
  354. if ($limit != "") $sel = $sel." LIMIT ".$limit;
  355.  
  356. $q = $this->conn->query($sel);
  357. if($q){
  358. $res = $this->buildOut($q);
  359. ini_set("memory_limit","500M");
  360. $q->close();
  361. return $res;
  362. }
  363. return false;
  364. }
  365. function queryData($query){
  366. $q = $this->conn->query($query);
  367. if($q){
  368. $res = $this->buildOut($q);
  369. $q->close();
  370. return $res;
  371. }
  372. return false;
  373. }
  374. function buildOut($res){
  375. $out = array();
  376. while ($row = $res->fetch_array()){
  377. $out[] = $row;
  378. }
  379. return $out;
  380. }
  381. //GENERAL FUNCTIONS FROM A DECENT DB CLASS
  382. public function query($sql) {
  383. //$this->last_query = $sql;
  384. $result = $this->conn->query($sql);
  385. return $result;
  386. }
  387. function del($table, $where) {
  388. $del = "DELETE FROM ".$table." WHERE ".$where;
  389. return $this->conn->query($del);
  390. }
  391. // "database-neutral" methods
  392. public function fetch_array($result_set) {
  393. return mysqli_fetch_array($result_set);
  394. }
  395.  
  396. public function num_rows($result_set) {
  397. return mysqli_num_rows($result_set);
  398. }
  399. }
  400. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement