PageRenderTime 44ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/db.php

https://github.com/ntulip/SweetCron-to-Posterous
PHP | 498 lines | 308 code | 120 blank | 70 comment | 46 complexity | d11d214bf6aca249bebe9f0981b5c816 MD5 | raw file
  1. <?php
  2. // Author: Emilio Cavazos
  3. // Date: 4/21/2007
  4. // Notes: Encapsulate mysql functionality (simple code for simple tasks)
  5. //
  6. // ==============
  7. // example usage
  8. // ==============
  9. //
  10. // // contact db parameters
  11. // $contact['first_name'] = $_POST['first_name'];
  12. // $contact['last_name'] = $_POST['last_name'];
  13. // $contact['office_phone'] = $_POST['office_phone'];
  14. // $contact['mobile_phone'] = $_POST['mobile_phone'];
  15. // $contact['email'] = $_POST['email'];
  16. // // insert contact
  17. // $dal->updateById('contacts', $contact, 'id', $_GET['con_id']);
  18. class DataAccessLayer
  19. {
  20. // connection variables
  21. private $_server = 'localhost';
  22. private $_username = 'root';
  23. private $_password = '';
  24. private $_database = 'db';
  25. public $debug = false;
  26. // connection
  27. private $_conn;
  28. function __construct($server,$username,$password,$database) {
  29. $this->_server = $server;
  30. $this->_username = $username;
  31. $this->_password = $password;
  32. $this->_database = $database;
  33. $this->_conn = new mysqli($this->_server, $this->_username, $this->_password, $this->_database);
  34. // check connection
  35. if (mysqli_connect_errno()) {
  36. printf('Connect failed: %s\n', mysqli_connect_error());
  37. exit();
  38. }
  39. // change character set to utf8
  40. if (!$this->_conn->set_charset('utf8')) {
  41. printf('Error loading character set utf8: %s\n', $this->_conn->error);
  42. }
  43. }
  44. function __destruct() {
  45. $this->_conn->close();
  46. }
  47. // print error
  48. public function error() {
  49. return $this->_conn->errno . ': ' . $this->_conn->error;
  50. }
  51. // count all rows - return int
  52. public function totalRows($field, $table) {
  53. $sql = 'select ' . $field . ' from '
  54. . $table;
  55. $result = $this->_conn->query($sql);
  56. // execute query
  57. return $result->num_rows;
  58. }
  59. public function query($sql) {
  60. // output sql sting for debugging
  61. // crude debugging
  62. if($this->debug) {
  63. echo '<h3>Query</h3>';
  64. echo '<div>';
  65. echo $sql;
  66. echo '</div>';
  67. }
  68. // execute query
  69. return $this->_conn->query($sql);
  70. }
  71. public function queryLimit($sql, $page, $pageCount) {
  72. $sql .= ' limit ' . $page . ', ' . $pageCount;
  73. // execute query
  74. return $this->query($sql);
  75. }
  76. public function nonQuery($sql) {
  77. // execute query
  78. $this->query($sql);
  79. return $this->_conn->affected_rows;
  80. }
  81. public function select($table) {
  82. $sql = 'select * from '
  83. . $table;
  84. // execute query
  85. return $this->query($sql);
  86. }
  87. public function selectFields($table, $parameters) {
  88. $sql = 'select ';
  89. // build column names
  90. foreach ($parameters as $key => $value) {
  91. $sql .= $value;
  92. if($key != end(array_keys($parameters))){
  93. $sql .= ', ';
  94. }
  95. }
  96. $sql .= ' from ' . $table;
  97. // execute query
  98. return $this->query($sql);
  99. }
  100. public function selectById($table, $idName, $idValue) {
  101. $sql = 'select * from '
  102. . $table
  103. . ' where '
  104. . $idName
  105. . ' = '
  106. . $idValue;
  107. // execute query
  108. return $this->query($sql);
  109. }
  110. public function selectByIdOrder($table, $idName, $idValue, $order) {
  111. $sql = 'select * from '
  112. . $table
  113. . ' where '
  114. . $idName
  115. . ' = '
  116. . $idValue
  117. . ' order by ' . $order;
  118. // execute query
  119. return $this->query($sql);
  120. }
  121. public function selectWhere($table, $parameters, $where) {
  122. $sql = 'select ';
  123. // build column names
  124. foreach ($parameters as $key => $value) {
  125. $sql .= $value;
  126. if($key != end(array_keys($parameters))){
  127. $sql .= ', ';
  128. }
  129. }
  130. $sql .= ' from ' . $table
  131. .= ' where ' . $where;
  132. // execute query
  133. return $this->query($sql);
  134. }
  135. public function selectWhereOrder($table, $where, $order) {
  136. $sql = 'select *'
  137. . ' from ' . $table
  138. . ' where ' . $where
  139. . ' order by ' . $order;
  140. // execute query
  141. return $this->query($sql);
  142. }
  143. public function selectFieldsWhereOrder($table, $parameters, $where, $order) {
  144. $sql = 'select ';
  145. // build column names
  146. foreach ($parameters as $key => $value) {
  147. $sql .= $value;
  148. if($key != end(array_keys($parameters))){
  149. $sql .= ', ';
  150. }
  151. }
  152. $sql .= ' from ' . $table
  153. . ' where ' . $where
  154. . ' order by ' . $order;
  155. // execute query
  156. return $this->query($sql);
  157. }
  158. public function selectOrder($table, $order) {
  159. $sql = 'select * from '
  160. . $table
  161. . ' order by ' . $order;
  162. // execute query
  163. return $this->query($sql);
  164. }
  165. public function selectFieldsOrder($table, $parameters, $order) {
  166. $sql = 'select ';
  167. // build column names
  168. foreach ($parameters as $key => $value) {
  169. $sql .= $value;
  170. if($key != end(array_keys($parameters))){
  171. $sql .= ', ';
  172. }
  173. }
  174. $sql .= ' from ' . $table
  175. .= ' order by ' . $order;
  176. // execute query
  177. return $this->query($sql);
  178. }
  179. //public function selectWhereOrder($table, $parameters, $where, $order)
  180. // search query
  181. public function search($table, $fieldsToSearch, $search) {
  182. $searchWords = explode(' ', $search);
  183. $sql = 'select *';
  184. $sql .= ' from ' . $table . ' where ';
  185. // search columns for a match
  186. foreach($searchWords as $wKey => $wValue) {
  187. $sql .= '(';
  188. foreach ($fieldsToSearch as $key => $value) {
  189. $sql .= $value . ' like \'%' . $wValue . '%\'';
  190. if($key != end(array_keys($fieldsToSearch))){
  191. $sql .= ' or ';
  192. }
  193. }
  194. if($wKey != end(array_keys($searchWords))){
  195. $sql .= ') and ';
  196. } else {
  197. $sql .= ')';
  198. }
  199. }
  200. // execute query
  201. return $this->query($sql);
  202. }
  203. // search by fields query
  204. public function searchFields($table, $fields, $fieldsToSearch, $search) {
  205. $searchWords = explode(' ', $search);
  206. $sql = 'select ';
  207. // build column names
  208. foreach ($fields as $key => $value) {
  209. $sql .= $value;
  210. if($key != end(array_keys($fields))){
  211. $sql .= ', ';
  212. }
  213. }
  214. $sql .= ' from ' . $table . ' where ';
  215. // search columns for a match
  216. foreach($searchWords as $wKey => $wValue) {
  217. $sql .= '(';
  218. foreach ($fieldsToSearch as $key => $value) {
  219. $sql .= $value . ' like \'%' . $wValue . '%\'';
  220. if($key != end(array_keys($fieldsToSearch))){
  221. $sql .= ' or ';
  222. }
  223. }
  224. if($wKey != end(array_keys($searchWords))){
  225. $sql .= ') and ';
  226. } else {
  227. $sql .= ')';
  228. }
  229. }
  230. // execute query
  231. return $this->query($sql);
  232. }
  233. // search query
  234. public function searchKeyConstrain($table, $fieldsToSearch, $search, $keyId, $keyValue) {
  235. $searchWords = explode(' ', $search);
  236. $sql = 'select *';
  237. $sql .= ' from ' . $table . ' where ';
  238. // search columns for a match
  239. foreach($searchWords as $wKey => $wValue) {
  240. $sql .= '(';
  241. foreach ($fieldsToSearch as $key => $value) {
  242. $sql .= $value . ' like \'%' . $wValue . '%\'';
  243. if($key != end(array_keys($fieldsToSearch))){
  244. $sql .= ' or ';
  245. }
  246. }
  247. if($wKey != end(array_keys($searchWords))){
  248. $sql .= ') and ';
  249. } else {
  250. $sql .= ')';
  251. }
  252. }
  253. $sql .= ' and ' . $keyId . ' = ' . $keyValue;
  254. // execute query
  255. return $this->query($sql);
  256. }
  257. // search custom query
  258. public function searchQuery($sql, $fieldsToSearch, $search) {
  259. $searchWords = explode(' ', $search);
  260. $sql .= ' where ';
  261. // search columns for a match
  262. foreach($searchWords as $wKey => $wValue) {
  263. $sql .= '(';
  264. foreach ($fieldsToSearch as $key => $value) {
  265. $sql .= $value . ' like \'%' . $wValue . '%\'';
  266. if($key != end(array_keys($fieldsToSearch))){
  267. $sql .= ' or ';
  268. }
  269. }
  270. if($wKey != end(array_keys($searchWords))){
  271. $sql .= ') and ';
  272. } else {
  273. $sql .= ')';
  274. }
  275. }
  276. // execute query
  277. return $this->query($sql);
  278. }
  279. // search custom query
  280. public function searchQueryOrder($sql, $fieldsToSearch, $search, $order) {
  281. $searchWords = explode(' ', $search);
  282. $sql .= ' where ';
  283. // search columns for a match
  284. foreach($searchWords as $wKey => $wValue) {
  285. $sql .= '(';
  286. foreach ($fieldsToSearch as $key => $value) {
  287. $sql .= $value . ' like \'%' . $wValue . '%\'';
  288. if($key != end(array_keys($fieldsToSearch))){
  289. $sql .= ' or ';
  290. }
  291. }
  292. if($wKey != end(array_keys($searchWords))){
  293. $sql .= ') and ';
  294. } else {
  295. $sql .= ')';
  296. }
  297. }
  298. $sql .= $order;
  299. // execute query
  300. return $this->query($sql);
  301. }
  302. // todo: add trim function to values
  303. public function insert($table, $parameters) {
  304. $sql = 'insert into '
  305. . $table
  306. . ' (';
  307. // build column names
  308. foreach ($parameters as $key => $value) {
  309. $sql .= $key;
  310. if($key != end(array_keys($parameters))){
  311. $sql .= ', ';
  312. }
  313. }
  314. $sql .= ') values (';
  315. // build values for columns
  316. foreach ($parameters as $key => $value) {
  317. $sql .= '\'' . $value . '\'';
  318. if($key != end(array_keys($parameters))){
  319. $sql .= ', ';
  320. }
  321. }
  322. $sql .= ') ';
  323. // execute query
  324. $this->query($sql);
  325. return $this->_conn->insert_id;
  326. }
  327. public function insertQuery($sql) {
  328. // execute query
  329. $this->query($sql);
  330. return $this->_conn->insert_id;
  331. }
  332. //public function insertSafe($table, $parameters, $types)
  333. // todo: add trim function to values
  334. public function updateById($table, $parameters, $idName, $idValue) {
  335. $sql = 'update '
  336. . $table
  337. . ' set ';
  338. // build column value pairs
  339. foreach ($parameters as $key => $value) {
  340. $sql .= $key . ' = \'' . $value . '\'';
  341. if($key != end(array_keys($parameters))){
  342. $sql .= ', ';
  343. }
  344. }
  345. $sql .= ' where '
  346. . $idName . ' = ' . $idValue;
  347. // execute query
  348. $this->query($sql);
  349. return $this->_conn->affected_rows;
  350. }
  351. public function updateWhere($table, $parameters, $what, $wValue) {
  352. $sql = 'update '
  353. . $table
  354. . ' set ';
  355. // build column value pairs
  356. foreach ($parameters as $key => $value) {
  357. $sql .= $key . ' = \'' . $value . '\'';
  358. if($key != end(array_keys($parameters))){
  359. $sql .= ', ';
  360. }
  361. }
  362. $sql .= ' where '
  363. . $what . ' = \'' . $wValue . '\'';
  364. // execute query
  365. $this->query($sql);
  366. return $this->_conn->affected_rows;
  367. }
  368. public function deleteById($table, $idName, $idValue) {
  369. $sql = 'delete from '
  370. . $table
  371. . ' where '
  372. . $idName . ' = ' . $idValue;
  373. // execute query
  374. $this->query($sql);
  375. return $this->_conn->affected_rows;
  376. }
  377. }
  378. ?>