PageRenderTime 48ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/SeekExtJSBook/include/class.mysql.php

http://seekstudio.googlecode.com/
PHP | 257 lines | 219 code | 31 blank | 7 comment | 30 complexity | 54f40c4573fff76360f82c35d225618d MD5 | raw file
  1. <?php
  2. /*
  3. * Author : Zeuxis Lo
  4. * Data : 2007/09/28 21:04
  5. * Version: v0.001 Beta
  6. * P-Name : Seek MYSQL Class
  7. *
  8. */
  9. class SeekMysql {
  10. var $explain;
  11. var $querytime;
  12. var $querycount = 0;
  13. var $updatecount= 0;
  14. var $character = '';
  15. var $debug = 0;
  16. function error() {
  17. return mysql_error();
  18. }
  19. function geterrno() {
  20. return mysql_errno();
  21. }
  22. function insert_id() {
  23. return mysql_insert_id();
  24. }
  25. function connect($servername, $dbusername, $dbpassword, $dbname, $usepconnect=0) {
  26. if($usepconnect) {
  27. if(!@mysql_pconnect($servername, $dbusername, $dbpassword)) {
  28. $this->halt('Can not connect to MySQL Server');
  29. }
  30. } else {
  31. if(!@mysql_connect($servername, $dbusername, $dbpassword)) {
  32. $this->halt('Can not connect to MySQL Server');
  33. }
  34. }
  35. if(mysql_get_server_info() > '4.1') {
  36. $get_charset = str_replace('-', '', $this->character);
  37. mysql_query("SET NAMES '".$get_charset."'");
  38. mysql_query("SET CHARACTER_SET_CLIENT = '$get_charset';");
  39. mysql_query("SET CHARACTER_SET_RESULTS = '$get_charset';");
  40. }
  41. if(mysql_get_server_info() > '5.0'){
  42. mysql_query("SET sql_mode=''");
  43. }
  44. $this->select_db($dbname);
  45. }
  46. function select_db($dbname) {
  47. if (!@mysql_select_db($dbname)) {
  48. $this->halt('Can not select to MySQL DataBase');
  49. }
  50. }
  51. function query($sql, $query_type = '') {
  52. $starttime = starttime();
  53. if($query_type == 'U_B' && @function_exists('mysql_unbuffered_query')) {
  54. $query = mysql_unbuffered_query($sql);
  55. } else {
  56. if($query_type == 'CACHE' && intval(mysql_get_server_info()) >= 4) {
  57. $sql = 'SELECT SQL_CACHE'.substr($sql, 6);
  58. }
  59. if(!($query = mysql_query($sql)) && $query_type != 'SILENT') {
  60. $this->halt('MySQL Query Error', $sql);
  61. }
  62. }
  63. $endtime = processtime();
  64. $this->querytime += $endtime;
  65. $this->querycount++;
  66. if($this->debug) {
  67. $sql = str_replace("\n","",trim($sql));
  68. $this->explain_query($sql, $endtime);
  69. }
  70. return $query;
  71. }
  72. function update($sql, $query_type = '') {
  73. $starttime = starttime();
  74. if(@function_exists('mysql_unbuffered_query')) {
  75. $query = mysql_unbuffered_query($sql);
  76. } else {
  77. if($query_type == 'CACHE' && intval(mysql_get_server_info()) >= 4) {
  78. $sql = 'SELECT SQL_CACHE'.substr($sql, 6);
  79. }
  80. if(!($query = mysql_query($sql)) && $query_type != 'SILENT') {
  81. $this->halt('MySQL Query Error', $sql);
  82. }
  83. }
  84. $endtime = processtime();
  85. $this->querytime += $endtime;
  86. $this->updatecount++;
  87. if($this->debug) {
  88. $this->explain_query($sql, $endtime);
  89. }
  90. return $query;
  91. }
  92. function explain_query($sql, $qtime) {
  93. if(preg_match("#^select#i", $sql)) {
  94. $query = mysql_query("EXPLAIN $sql");
  95. $this->explain .= "<table width='95%' class='alltable' cellpadding='4' cellspacing='1' align=\"center\">";
  96. $this->explain .= "<tr>";
  97. $this->explain .= " <td colspan='8' class='tabletitle'><strong>#".$this->querycount." - Select Query</strong></td>";
  98. $this->explain .= "</tr>";
  99. $this->explain .= "<tr>";
  100. $this->explain .= " <td colspan='8' class='sqlcode'>".$sql."</td>";
  101. $this->explain .= "</tr>";
  102. $this->explain .= "<tr class='sqltitle'>";
  103. $this->explain .= " <td><strong>table</strong></td>";
  104. $this->explain .= " <td><strong>type</strong></td>";
  105. $this->explain .= " <td><strong>possible_keys</strong></td>";
  106. $this->explain .= " <td><strong>key</strong></td>";
  107. $this->explain .= " <td><strong>key_len</strong></td>";
  108. $this->explain .= " <td><strong>ref</strong></td>";
  109. $this->explain .= " <td><strong>rows</strong></td>";
  110. $this->explain .= " <td><strong>Extra</strong></td>";
  111. $this->explain .= "</tr>";
  112. while($table = mysql_fetch_array($query)) {
  113. $this->explain .= "<tr class='sqlinfo'>";
  114. $this->explain .= " <td>".$table['table']."</td>";
  115. $this->explain .= " <td>".$table['type']."</td>";
  116. $this->explain .= " <td>".$table['possible_keys']."</td>";
  117. $this->explain .= " <td>".$table['key']."</td>";
  118. $this->explain .= " <td>".$table['key_len']."</td>";
  119. $this->explain .= " <td>".$table['ref']."</td>";
  120. $this->explain .= " <td>".$table['rows']."</td>";
  121. $this->explain .= " <td>".$table['Extra']."</td>";
  122. $this->explain .= "</tr>";
  123. }
  124. $this->explain .= "<tr class='sqltime'>";
  125. $this->explain .= " <td colspan='8'>Query Time: ".$qtime."</td>";
  126. $this->explain .= "</tr>";
  127. $this->explain .= "</table>";
  128. $this->explain .= "<br />";
  129. } else {
  130. $this->explain .= "<table width='95%' cellpadding='4' cellspacing='1' align=\"center\">";
  131. $this->explain .= "<tr>";
  132. $this->explain .= " <td><strong>#";$this->querycount." - Update Query</strong></td>";
  133. $this->explain .= "</tr>";
  134. $this->explain .= "<tr>";
  135. $this->explain .= " <td><span>";$sql."</span></td>";
  136. $this->explain .= "</tr>";
  137. $this->explain .= "<tr>";
  138. $this->explain .= " <td>Query Time: ";$qtime."</td>";
  139. $this->explain .= "</tr>";
  140. $this->explain .= "</table>";
  141. $this->explain .= "<br />";
  142. }
  143. }
  144. function fetch_array($query, $type = MYSQL_ASSOC) {
  145. return mysql_fetch_array($query,$type);
  146. }
  147. function fetch_row($query) {
  148. return mysql_fetch_row($query);
  149. }
  150. function fetch_one($query, $type = MYSQL_ASSOC) {
  151. $result = $this->query($query);
  152. $record = $this->fetch_array($result, $type);
  153. $this->free_result($result);
  154. return $record;
  155. }
  156. function fetch_two($query, $type = MYSQL_ASSOC) {
  157. $result = $this->query($query);
  158. while($records = $this->fetch_array($result, $type)) {
  159. $record[] = $records;
  160. }
  161. $this->free_result($result);
  162. return $record;
  163. }
  164. function num_rows($query) {
  165. return mysql_num_rows($query);
  166. }
  167. function result($query, $row) {
  168. return mysql_result($query, $row);
  169. }
  170. function free_result($query) {
  171. return mysql_free_result($query);
  172. }
  173. function num_fields($query) {
  174. return mysql_num_fields($query);
  175. }
  176. function close() {
  177. return mysql_close();
  178. }
  179. function halt($msg,$sql=""){
  180. global $charset;
  181. $author_mark = "3*JTNDc3BhbiUyMG9uY2xpY2slM0QlMjJ3aW5kb3cubG9jYXRpb24lM0QlMjdodHRwJTNBJTJGJTJGbmVyby4zamsuY29tJTJGJTI3JTIyJTNFU2Vla1N0dWRpbyUzQyUyRnNwYW4lM0U=";
  182. $message = "<html>";
  183. $message .= "<head>";
  184. $message .= "<meta content=\"text/html; charset=".$charset."\" http-equiv=\"Content-Type\">";
  185. $message .= "<style type=\"text/css\">";
  186. $message .= "body,td,pre {";
  187. $message .= " font-family : Tahoma, sans-serif; font-size : 9pt;";
  188. $message .= "}";
  189. $message .= "td {";
  190. $message .= " background-color:#FFFFFF";
  191. $message .= "}";
  192. $message .= "</style>";
  193. $message .= "</head>";
  194. $message .= "<body bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#006699\" vlink=\"#5493B4\">";
  195. $message .= "<div align='left'>";
  196. $message .= "<table cellpadding='3' cellspacing='1' border='0'>";
  197. $message .= "<tr>";
  198. $message .= " <td colspan='3' style='color:#FF0000'><b>[SK-SYSTEM!] DataBase Error Messages - By ".rawurldecode(base64_decode(substr($author_mark,2,138)))."</b></td>";
  199. $message .= "</tr>";
  200. $message .= "<tr>";
  201. $message .= " <td><b>Time</b></td><td align='center' width='5%'> :: </td><td align='left'>".date("Y-m-d H:i")."</td>";
  202. $message .= "</tr>";
  203. $message .= "<tr>";
  204. $message .= " <td><b>Error</b></td><td align='center'> :: </td><td align='left'>".$this->error()."</td>";
  205. $message .= "</tr>";
  206. $message .= "<tr>";
  207. $message .= " <td><b>ErrorNo</b></td><td align='center'> :: </td><td align='left'>".$this->geterrno()."</td>";
  208. $message .= "</tr>";
  209. if ($sql) {
  210. $message .= "<tr>";
  211. $message .= " <td><b>Query</b></td><td align='center'> :: </td><td align='left'>".$sql."</td>";
  212. $message .= "</tr>";
  213. }
  214. $message .= "<tr>";
  215. $message .= " <td><b>Script</b></td><td align='center'> :: </td><td align='left'>http://".$_SERVER['HTTP_HOST'].getenv("REQUEST_URI")."</td>";
  216. $message .= "</tr>";
  217. $message .= "<tr>";
  218. $message .= " <td><b>Message</b></td><td align='center'> :: </td><td align='left'>".htmlspecialchars($msg)."</td>";
  219. $message .= "</tr>";
  220. $message .= "</table>";
  221. $message .= "</div></body></html>";
  222. echo $message;
  223. exit;
  224. }
  225. }
  226. ?>