mysql.lib.php
上传用户:jiangbw
上传日期:2022-03-16
资源大小:49k
文件大小:38k
源码类别:

MySQL数据库

开发平台:

Unix_Linux

  1. <?
  2. /*======================================================================*
  3. || #################################################################### ||
  4. || # BUILD UNDER PHP SCRIPTNET 3.2.1 FRAMEWORK ||
  5. || # ---------------------------------------------------------------- # ||
  6. || # Code2Art Open Source Software. All Rights Reserved.  ||
  7. || # This file should be redistributed in whole or significant part.  # ||
  8. || # ------------------ SCRIPTNET IS FREE SOFTWARE ------------------ # ||
  9. || # http://www.code2art.com | http://www.code2art.com/scriptnet      # ||
  10. || # Copyleft by Benediktus Ardian Hersanto, SE       # ||
  11. || # Sorry if this framework is still unavailable for public       # ||
  12. || # because I still searching on my own head.       # ||
  13. || #################################################################### ||
  14. *======================================================================*/
  15. /*======================================================================*
  16. || #################################################################### ||
  17. || DBF to MySQL Bulk Converter 2.0 ||
  18. ||______________________________________________________________________||
  19. || This utility was developed on 2006, since this were used to be on    ||
  20. || my own library. But I think I should share it to you, because I      ||
  21. || need to save my work on Internet (I don't believe on my own HD drive)||
  22. || it always crash and had a terrible bad sectors.  ||
  23. || Thanks to all person who download this utility, I hope you enjoy it. ||
  24. || ||
  25. || Regards, ||
  26. || Benediktus Ardian Hersanto,SE (ardie_b@yahoo.com) ||
  27. /*======================================================================*/
  28. // ---------------------------------------------------------------------//
  29. // Free to use for everyone who understand PHP
  30. // ---------------------------------------------------------------------//
  31. // Last Update : 27.03.2007
  32. // CHANGES :
  33. // MySQL Exception Handler :
  34. //  Added : Assert command on handling error of mysql execution
  35. // --------------------------------------------------------------------------------
  36. // Free to use to everyone who understand PHP
  37. // --------------------------------------------------------------------------------
  38. /*
  39. *@author B. Ardian Hersanto
  40. *
  41. *@copyright GNU as long as you're friends of mine, just kidding
  42. *@package DBComponents
  43. */
  44. $basename = explode('.',basename(__FILE__));
  45. $file_ext = array_pop($basename);
  46. $lib_dir = str_replace('\','/',dirname(__FILE__));
  47. $filename = $lib_dir.'/rdbms.cls.' . FILE_EXT;
  48. define('DB_ROOT_CLASS',$filename);
  49. if(file_exists(DB_ROOT_CLASS)) include(DB_ROOT_CLASS);
  50. if(!isset($_LIBRARY[basename(__FILE__)])) 
  51. $_LIBRARY[basename(__FILE__)] = "mysql";
  52. // This MySQLException are trapping incorrect SQL syntax, the main core error are handled by debugger.lib.php
  53. function MySQLException($file, $line, $code) 
  54. {
  55. global $_ERROR;
  56. $_ERROR = new stdclass;
  57. $_ERROR->file = $file;
  58. $_ERROR->line = $line;
  59. $_ERROR->code = $code;
  60. if(ini_get('display_errors')==1) die('<b>MySQL Syntax ERROR :</b> '.mysql_error());
  61. trigger_error(mysql_error(),E_USER_ERROR);
  62. error_log("[".date("d-m-Y")." ".date("H:i:s")."] [client ".$_SERVER['REMOTE_ADDR']."] [FILE:".$file.", LINE:".$line."] [".mysql_error()."]rn", 3, ROOT_DIR.DB_ERROR_LOG);
  63. }
  64. class MySQL extends RDBMS {
  65. // These variables are used in START TRANSACTION MODE
  66. // NOTES : THE CHANGES TO TABLE IS AFFECTED ONLY TO InnoDB Type Table
  67. // THESE FLAG WILL IGNORED IF YOUR TABLE TYPE IS MyISAM TABLE
  68. var $safeMode = true;
  69. var $COMMIT_CHANGES = false;
  70. var $unbuffered = false;
  71. //These variables will evaluate itself on each query event
  72. var $onUpdate, $onBrowse, $onClose, $onDelete, $onInsert, $onQueryStart;
  73. //Library Properties
  74. var $about = "GNU PHP - MySQL Component for PHP 4";
  75. //var $error_log = true;
  76. //var $log_file = "AppError.txt"; //Already defined on RDBMS Class
  77. var $version = "4.2.06-dev.27.01";
  78. function MySQL()
  79. {
  80. if(!function_exists('mysql_connect')) 
  81. trigger_error('<p/><b/><font color="#FF0000" face="Verdana" size="2" onmouseover=""/>MySQL DB Component dependency problem<table border="0" width="29%" cellspacing="1" style="border:1px solid #000080;background-color:#D5E6DC"/><tr/><td/><font face="Verdana" size="2" color="#FF0000"/>php_mysql.dll is needed to run this component or your current PHP version is no longer support the original mysql function from PHP 4', E_ERROR);
  82. // Inherit create from base component RDBMS
  83. parent::_create();
  84. // Error Handler
  85. assert_options(ASSERT_ACTIVE, 1);
  86. assert_options(ASSERT_WARNING, 0);
  87. assert_options(ASSERT_QUIET_EVAL, 1);
  88. assert_options(ASSERT_CALLBACK, 'MySQLException');
  89. // Initial Connection
  90. if($this->Connect()) {
  91. if(!defined("__MYSQL")) define('__MYSQL',1);
  92. } else {
  93. trigger_error($this->TrackError(), $this->error_priority[0]);
  94. }
  95. $this->mysql_version = $this->GetServerVersion();
  96. }
  97. function _create() { parent::_create(); }
  98. function _destroy() { parent::_destroy(); }
  99. function TrackError()
  100. {
  101. $this->error_msg = mysql_error();
  102. $this->inherited(__FUNCTION__);
  103. }
  104. function TestConnection($dbname,$dbhost,$dbport,$dbuser,$dbpassword)
  105. {
  106. $cid = @mysql_connect($dbhost.":".$dbport,$dbuser,$dbpassword);
  107. if ($cid) {
  108. if(@mysql_select_db ($dbname,$cid)) {
  109. @mysql_close($cid);
  110. return true;
  111. } else { 
  112. @mysql_close($cid);
  113. return false;
  114. }
  115. } else {
  116. @mysql_close($cid);
  117. return false;
  118. }
  119. }
  120. function Connect()
  121. {
  122. if($this->port!='3306') $this->hostname .= ':'.$this->port;
  123. $this->db = @mysql_connect($this->hostname,$this->username,$this->password);
  124. if($this->db) {
  125. if(@mysql_select_db($this->database)) {
  126. /* Too much consume memory if there is more than 10000 tables
  127. if(is_array($this->Tables)) $this->Tables = array();
  128. $this->Tables = array_merge($this->Tables,$this->ListTables());*/
  129. $this->connected = true;
  130. return true;
  131. } else return false;
  132. } else {
  133. //trigger_error($this->TrackError(), E_USER_ERROR); // UnComment this line if you need to connect manually without using default constructor connection
  134. return false;
  135. }
  136. }
  137. function Reconnect($dbname,$hostname='',$username='',$password='')
  138. {
  139. if(!empty($hostname)) $this->hostname=$hostname;
  140. if(!empty($username)) $this->username=$username;
  141. if(!empty($password)) $this->password=$password;
  142. $this->db = @mysql_connect($this->hostname,$this->username,$this->password);
  143. if($this->db) {
  144. if(@mysql_select_db($dbname)) {
  145. $this->connected = true;
  146. $this->database = $dbname;
  147. /*if(is_array($this->Tables)) {
  148. $this->Tables = array();
  149. $this->Tables = array_merge($this->Tables,$this->ListTables());
  150. }*/
  151. return true;
  152. } else return false;
  153. } else {
  154. //trigger_error($this->TrackError(), E_USER_ERROR); // UnComment this line if you need to connect manually without using default constructor connection
  155. return false;
  156. }
  157. }
  158. function Browse($fields,$table,$exp='',$page='',$limit='',$urlquery='',$encode_method="base64_encode",$func_type="php") 
  159. {
  160. return $this->Select($fields,$table,$exp,$page,$limit,$urlquery,$encode_method,$func_type);
  161. }
  162. function Select($fields,$table,$exp='',$page='',$limit='',$urlquery='',$encode_method="",$func_type="php") 
  163. {
  164. if(strlen(trim($page))>0) if(!settype($page,"integer")) return;
  165. if(strlen(trim($limit))>0) if(!settype($limit,"integer")) return;
  166. if((is_int($page))&&(is_int($limit))) {
  167. parent::createNavigator($table,$exp,$page,$limit,$urlquery,$encode_method,$func_type);
  168. $paging = $this->SQL_LIMIT;
  169. } else $paging = '';
  170. if (empty($exp)) $this->command = "select {$fields} from {$table}".$paging;
  171. else $this->command = "select {$fields} from {$table} where {$exp}".$paging;
  172. if($this->unbuffered) $status = assert('$this->pid = @mysql_unbuffered_query($this->command)');
  173. else $status = assert('$this->pid = @mysql_query($this->command)');
  174. $results = array();
  175. if($status) {
  176. $this->active_table = $table;
  177. if ($this->pid) {
  178. if ($this->debug) echo "<hr><br><font face="Verdana" size="1">Executing SELECT STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  179. if(!$this->unbuffered) {
  180. $this->RecordCount = @mysql_num_rows($this->pid);
  181. if ($this->RecordCount>0) {
  182. if($this->return_as_array) {
  183. while ($data=@mysql_fetch_array($this->pid)) $results[] = $data;
  184. mysql_free_result($this->pid);
  185. if(!empty($this->onBrowse)) $this->onBrowse();
  186. return $results;
  187. } else {
  188. while ($data=@mysql_fetch_object($this->pid)) $results[] = $data;
  189. mysql_free_result($this->pid);
  190. if(!empty($this->onBrowse)) $this->onBrowse();
  191. return $results;
  192. }
  193. } else return NULL;
  194. } else {
  195. while ($data=@mysql_fetch_array($this->pid)) {
  196. $results[] = $data;
  197. if(count($results)>5000) die('Data is too large to read please provide paging parameter');
  198. }
  199. mysql_free_result($this->pid);
  200. return $results;
  201. }
  202. } else {
  203. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing SELECT STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  204. $this->TrackError();
  205. return false;
  206. }
  207. }
  208. }
  209. function GetServerVersion() 
  210. {
  211. $data = @mysql_query('select version()');
  212. $data = mysql_fetch_array($data);
  213. return $data[0];
  214. }
  215.     function Update($table,$value,$exp='') 
  216.     {
  217.      if($this->safeMode) {
  218.      if(preg_match("/^4.*/i",$this->mysql_version)) {
  219.      $uid = mysql_query('SET AUTOCOMMIT=0');
  220.      $uid = mysql_query('START TRANSACTION');
  221.      } else if (preg_match("/^3.*/i",$this->mysql_version)) {
  222.      $uid = mysql_query('SET AUTOCOMMIT=0');
  223.      $uid = mysql_query('BEGIN WORK');
  224.      }
  225.      } else {
  226.      $uid = mysql_query('SET AUTOCOMMIT=1');
  227.      }
  228.         if (empty($exp)) $this->command = "update {$table} set {$value}";
  229.         else $this->command = "update {$table} set {$value} where {$exp}";
  230. if(assert('$this->uid = mysql_query($this->command)')) {
  231. if ($this->uid) {
  232. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing UPDATE STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  233. $this->AffectedRows = mysql_affected_rows();
  234. if(!empty($this->onUpdate)) $this->onUpdate();
  235. if($this->safeMode) {
  236. if($this->COMMIT_CHANGES) {
  237. $uid = mysql_query('COMMIT'); 
  238. } else {
  239. $uid = mysql_query('ROLLBACK');
  240. }
  241. }
  242. return true;
  243. } else {
  244. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing UPDATE STATEMENT on file : <b><font color=#FF0000>",basename($this->FILE),"</font></b> line <b><font color=#0000FF>",$this->LINE,"</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>",$this->command,"</i>"</font></font><br><hr>";
  245. $this->TrackError();
  246. return false;
  247.  }
  248. }
  249.     }
  250.     function Delete($table,$exp='') 
  251.     {
  252.      if($this->safeMode) {
  253.      if(preg_match("/^4.*/i",$this->mysql_version)) {
  254.      $uid = mysql_query('SET AUTOCOMMIT=0');
  255.      $uid = mysql_query('START TRANSACTION');
  256.      } else if (preg_match("/^3.*/i",$this->mysql_version)) {
  257.      $uid = mysql_query('SET AUTOCOMMIT=0');
  258.      $uid = mysql_query('BEGIN WORK');
  259.      }
  260.      } else {
  261.      $uid = mysql_query('SET AUTOCOMMIT=1');
  262.      }
  263. if($this->simulate) { $this->debug=true; $tmp = $this->Browse("*",$table,$exp); }
  264.         if (empty($exp)) $this->command = "delete from {$table}";
  265.         else $this->command = "delete from {$table} where {$exp}";
  266. if(assert('$this->eid = mysql_query($this->command)')) {
  267. if ($this->eid) {
  268. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing DELETE STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  269. $this->AffectedRows = mysql_affected_rows();
  270. if(!empty($this->onDelete)) $this->onDelete();
  271. if($this->safeMode) {
  272. if($this->COMMIT_CHANGES) {
  273. $uid = mysql_query('COMMIT'); 
  274. } else {
  275. $uid = mysql_query('ROLLBACK');
  276. }
  277. }
  278. if($this->simulate) { 
  279. for($i=0;$i<count($tmp);$i++) {
  280. $this->Insert($table,implode(",",$this->getFieldsFromObject($tmp)),implode(",",$this->getDataFromObject($tmp,"'")));
  281. }
  282. $this->debug = false;
  283. }
  284. return true;
  285. } else {
  286. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing DELETE STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  287. $this->TrackError();
  288. return false;
  289. }
  290. }
  291.     }
  292.     
  293.     //function Replace($table,$values
  294. function InsertSelect($dest_fields,$dest_table,$src_fields,$src_table,$exp='',$ignore=true) {
  295.      if($this->safeMode) {
  296.      if(preg_match("/^4.*/i",$this->mysql_version)) {
  297.      $uid = mysql_query('SET AUTOCOMMIT=0');
  298.      $uid = mysql_query('START TRANSACTION');
  299.      } else if (preg_match("/^3.*/i",$this->mysql_version)) {
  300.      $uid = mysql_query('SET AUTOCOMMIT=0');
  301.      $uid = mysql_query('BEGIN WORK');
  302.      }
  303.      } else {
  304.      $uid = mysql_query('SET AUTOCOMMIT=1');
  305.      }
  306. if (empty($exp))
  307.         $this->command = "Insert ".(($ignore)?"IGNORE":"")." into {$dest_table}({$dest_fields}) SELECT {$src_fields} FROM {$src_table}";
  308. else 
  309. $this->command = "Insert ".(($ignore)?"IGNORE":"")." into {$dest_table}({$dest_fields}) SELECT {$src_fields} FROM {$src_table} WHERE {$exp}";
  310.         $this->pid = @mysql_query($this->command);
  311.         if ($this->pid) {
  312.          if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing INSERT STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  313.             if($this->safeMode) {
  314.              if($this->COMMIT_CHANGES) {
  315.              $uid = mysql_query('COMMIT'); 
  316.              } else {
  317.              $uid = mysql_query('ROLLBACK');
  318.              }
  319.             }
  320.             return true;
  321.         } else {
  322. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing INSERT STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  323.          $this->TrackError();
  324. return false;
  325.         }
  326. }
  327.     function Insert($table,$fields,$values,$ignore=false) 
  328.     {
  329.      if($this->safeMode) {
  330.      if(preg_match("/^4.*/i",$this->mysql_version)) {
  331.      $uid = mysql_query('SET AUTOCOMMIT=0');
  332.      $uid = mysql_query('START TRANSACTION');
  333.      } else if (preg_match("/^3.*/i",$this->mysql_version)) {
  334.      $uid = mysql_query('SET AUTOCOMMIT=0');
  335.      $uid = mysql_query('BEGIN WORK');
  336.      }
  337.      } else {
  338.      $uid = mysql_query('SET AUTOCOMMIT=1');
  339.      }
  340.         $this->command = "Insert ".(($ignore)?"Ignore":"")." into {$table}({$fields}) values ({$values})";
  341. if(assert('$this->pid = mysql_query($this->command)')) {
  342. $this->last_record_id = mysql_insert_id($this->db);
  343. if ($this->pid) {
  344. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing INSERT STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  345. if(!empty($this->onInsert)) $this->onInsert();
  346. if($this->safeMode) {
  347. if($this->COMMIT_CHANGES) {
  348. $uid = mysql_query('COMMIT'); 
  349. } else {
  350. $uid = mysql_query('ROLLBACK');
  351. }
  352. }
  353. return true;
  354. } else {
  355. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing INSERT STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  356. $this->TrackError();
  357. return false;
  358. }
  359. } else {
  360. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing INSERT STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  361. $this->TrackError();
  362. return false;
  363. }
  364.     }
  365.     function Replace($table,$fields,$values) 
  366.     {
  367.      if($this->safeMode) {
  368.      if(preg_match("/^4.*/i",$this->mysql_version)) {
  369.      $uid = mysql_query('SET AUTOCOMMIT=0');
  370.      $uid = mysql_query('START TRANSACTION');
  371.      } else if (preg_match("/^3.*/i",$this->mysql_version)) {
  372.      $uid = mysql_query('SET AUTOCOMMIT=0');
  373.      $uid = mysql_query('BEGIN WORK');
  374.      }
  375.      } else {
  376.      $uid = mysql_query('SET AUTOCOMMIT=1');
  377.      }
  378.         $this->command = "Replace into {$table}({$fields}) values ({$values})";
  379. if(assert('$this->pid = mysql_query($this->command)')) {
  380. if ($this->pid) {
  381. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing REPLACE STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  382. if(!empty($this->onInsert)) $this->onInsert();
  383. if($this->safeMode) {
  384. if($this->COMMIT_CHANGES) {
  385. $uid = mysql_query('COMMIT'); 
  386. } else {
  387. $uid = mysql_query('ROLLBACK');
  388. }
  389. }
  390. return true;
  391. } else {
  392. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing REPLACE STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  393. $this->TrackError();
  394. return false;
  395. }
  396. }
  397.     }
  398.     function Query($command,$return_result=0) 
  399.     {
  400. settype($command,"string");
  401.         $this->command = (string)str_replace("rn","",stripslashes($command));
  402. if(assert('$this->pid = mysql_query($this->command,$this->db)')) {
  403. if ($this->pid) {
  404. if ($this->debug) echo "<hr><br><font face="Verdana" size="1">Executing QUERY STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  405. if(!empty($this->onQueryStart)) $this->onQueryStart();
  406. if($return_result) {
  407. $this->AffectedRows = @mysql_affected_rows();
  408. $this->RecordCount = @mysql_num_rows($this->pid);
  409. if($this->return_as_array) {
  410. $time0     = time();
  411. while ($data=@mysql_fetch_array($this->pid)) {
  412. $results[] = $data;
  413. $time1     = time();
  414. if ($time1 >= $time0 + 30) {
  415. $time0 = $time1;
  416. header('X-pmaPing: Pong');
  417. }
  418. }
  419. mysql_free_result($this->pid);
  420. } else {
  421. $time0     = time();
  422. while ($data=@mysql_fetch_object($this->pid)) {
  423. $results[] = $data;
  424. $time1     = time();
  425. if ($time1 >= $time0 + 30) {
  426. $time0 = $time1;
  427. header('X-pmaPing: Pong');
  428. }
  429. }
  430. mysql_free_result($this->pid);
  431. }
  432. if(isset($results)) return $results; else return NULL;
  433. } else 
  434.    return $this->pid;
  435.  } else {
  436. if ($this->debug) echo "<hr><br><font face="Verdana" size="1" color="#ff0000">Executing QUERY STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  437. $this->TrackError();
  438. return false;
  439.  }
  440. }
  441.     }
  442. function getRecordData($table,$expression='',$buffer_name='') 
  443. {
  444. $rec = $this->Browse("*",$table,$expression);
  445. if(count($rec)>0) {
  446. if(!empty($buffer_name)) {
  447. global $$buffer_name;
  448. $$buffer_name = $rec[0];
  449. } else {
  450. global $RECORD;
  451. $RECORD = $rec[0];
  452. }
  453. }
  454. }
  455. function getFieldDataType($database,$table,$fieldname) {
  456. $result = mysql_query("SHOW COLUMNS FROM `{$database}`.`{$table}`");
  457. if (!$result) {
  458. echo 'Could not run query: ' . mysql_error();
  459. exit;
  460. }
  461. if (mysql_num_rows($result) > 0) {
  462. while ($row = mysql_fetch_assoc($result)) {
  463. if($row['Field']==$fieldname) {
  464. return $row['Type'];
  465. break;
  466. }
  467. }
  468. }
  469. }
  470. function getCustomRecordData($fields,$table,$expression='',$buffer_name='')
  471. {
  472. $rec = $this->Browse($fields,$table,$expression);
  473. if(count($rec)>0) {
  474. if(!empty($buffer_name)) {
  475. global $$buffer_name;
  476. $$buffer_name = $rec[0];
  477. } else {
  478. global $RECORD;
  479. $RECORD = $rec[0];
  480. }
  481. }
  482. }
  483. function getFieldData($field_name,$fields,$table,$exp='') 
  484. {
  485. $this->return_as_array = true;
  486. $rec = $this->Select($fields,$table,$exp);
  487. $this->return_as_array = false;
  488. if(count($rec)>0) {
  489. return $rec[0][$field_name];
  490. } else return;
  491. }
  492.     function Count($items,$table,$exp='') 
  493.     {
  494.      if (empty($exp)) $this->command = "select count({$items}) from {$table}";
  495.         else $this->command = "select count($items) from {$table} where {$exp}";
  496.         if ($this->debug) echo "<hr><br><font face="Verdana" size="1">Executing COUNT STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  497.         $this->pid = @mysql_query($this->command);
  498. if($this->pid) {
  499. if(mysql_num_rows($this->pid)>1) return mysql_num_rows($this->pid); else {
  500. $total = @mysql_fetch_array($this->pid);
  501.      return $total[0];
  502. }
  503. } else {
  504. $this->TrackError();
  505. }
  506.     }
  507.     function Sum($field,$table,$exp='') 
  508.     {
  509.             if (empty($exp)) $this->command = "select sum({$field}) from {$table}";
  510.             else $this->command = "select sum({$field}) from {$table} where {$exp}";
  511.             if ($this->debug) echo "<hr><br><font face="Verdana" size="1">Executing SUM STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  512.             $this->pid = @mysql_query($this->command);
  513. if($this->pid) {
  514. $total = @mysql_fetch_array($this->pid);
  515.             return (empty($total[0]))?0:$total[0];
  516. } else {
  517. $this->TrackError();
  518. }
  519.     }
  520.     function Max($field,$table,$exp='') 
  521.     {
  522.             if (empty($exp)) $this->command = "select max({$field}) from {$table}";
  523.             else $this->command = "select max({$field}) from {$table} where {$exp}";
  524.             if ($this->debug) echo "<hr><br><font face="Verdana" size="1">Executing MAX STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  525.             $this->pid = @mysql_query($this->command);
  526. if($this->pid) {
  527. $total = @mysql_fetch_array($this->pid);
  528.             return (empty($total[0]))?0:$total[0];
  529. } else {
  530. $this->TrackError();
  531. }
  532.     }
  533.     function Min($field,$table,$exp='') 
  534.     {
  535.             if (empty($exp)) $this->command = "select min({$field}) from {$table}";
  536.             else $this->command = "select min({$field}) from {$table} where {$exp}";
  537.             if ($this->debug) echo "<hr><br><font face="Verdana" size="1">Executing MIN STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  538.             $this->pid = @mysql_query($this->command);
  539. if($this->pid) {
  540. $total = @mysql_fetch_array($this->pid);
  541.             return (empty($total[0]))?0:$total[0];
  542. } else {
  543. $this->TrackError();
  544. }
  545.     }
  546. function getRecordLen($table) {
  547. return $this->Count("*",$table);
  548. }
  549. function TruncateTable($table) {
  550. $pid = mysql_query("TRUNCATE TABLE ".$table);
  551. if($pid) return true; else die(mysql_error());
  552. }
  553. function DumpTableToTemp($data,$file,$separator) 
  554. {
  555. $fp = fopen($file,'w');
  556. if($fp) {
  557. fwrite($fp,ereg_replace(",",$separator,$this->GetFieldNames($data,$this->active_table))."rn");
  558. for($i=0;$i<count($data);$i++) {
  559. $fields = get_object_vars($data[$i]);
  560. fwrite($fp,implode($separator,array_values($fields))."rn");
  561. }
  562. }
  563. fclose($fp);
  564. }
  565. function DumpTableToExcel($tablename) 
  566. {
  567. header("Content-type: application/vnd.excel");
  568. $fields  = @mysql_list_fields($this->dbname, $tablename, $this->db);
  569. $columns = @mysql_num_fields($fields);
  570. for ($i = 0; $i < $columns; $i++) {
  571. echo mysql_field_name($fields, $i)."t";
  572. }
  573. echo  "rn";
  574. $records = $this->Query("select * from {$tablename}");
  575. while ($records = @mysql_fetch_array($this->pid)) {
  576. for($n=0;$n<$columns;$n++) echo $records[$n]."t";
  577. echo "rn";
  578. }
  579. header("Content-Disposition: attachment; filename={$tablename}.xls");
  580. }
  581. function getFieldsFromObject($obj) 
  582. {
  583. if(is_array($obj)) {
  584. if(count($obj)>0) {
  585. return array_keys(get_object_vars($obj[0]));
  586. }
  587. } else if(is_object($obj)) {
  588. return array_keys(get_object_vars($obj));
  589. }
  590. }
  591. function getFieldsFromAssoc($obj,$type='integer') 
  592. {
  593. if(is_array($obj)) {
  594. if(count($obj)>0) {
  595. if(is_array($obj[0]))
  596. $fields = array_keys($obj[0]); else
  597. $fields = array_keys($obj);
  598. for($n=0;$n<count($fields);$n++) {
  599. if($type=='integer') {
  600. if(is_int($fields[$n])) $field[] = $fields[$n];
  601. } else if($type=='string') {
  602. if(is_string($fields[$n])) $field[] = $fields[$n];
  603. }
  604. }
  605. return $field;
  606. }
  607. } else if(is_object($obj)) {
  608. return array();
  609. }
  610. }
  611. function getDataFromObject($obj,$quote='') 
  612. {
  613. if(is_array($obj)) {
  614. if(count($obj)>0) {
  615. if(empty($quote)) {
  616. return array_values(get_object_vars($obj[0]));
  617. } else {
  618. $dat = array_values(get_object_vars($obj[0]));
  619. for($i=0;$i<count($dat);$i++) $dat[$i] = $quote.$dat[$i].$quote;
  620. return $dat;
  621. }
  622. }
  623. } else if(is_object($obj)) {
  624. if(empty($quote)) {
  625. return array_values(get_object_vars($obj));
  626. } else {
  627. $dat = array_values(get_object_vars($obj));
  628. for($i=0;$i<count($dat);$i++) $dat[$i] = $quote.$dat[$i].$quote;
  629. return $dat;
  630. }
  631. }
  632. }
  633. function ListDatabases() 
  634. {
  635. $db_list = @mysql_list_dbs($this->db);
  636. while ($row = @mysql_fetch_array($db_list)) {
  637.     $dbs[] = $row[0];
  638. }
  639. if(isset($dbs)) return $dbs; else return NULL;
  640. }
  641. function CreateDatabase($dbname,$auth_user,$auth_password) 
  642. {
  643. $this->Close(); $current_user = $this->username; $this->username = $this->admin;
  644. $current_password = $this->password; $this->password = $this->dba_password; $current_database = $this->database; $this->database = "mysql";
  645. if ($this->Connect()) {
  646. $this->Query("Create database {$dbname}");
  647. $this->Query("grant all privileges on {$dbname}.* to {$auth_user}@{$this->hostname} identified by '{$auth_password}'");
  648. $this->Close();
  649. $this->username = $current_user;
  650. $this->password = $current_password;
  651. $this->database = $current_database;
  652. $this->Connect();
  653. return true;
  654. } else {
  655. $this->TrackError();
  656. return false;
  657. }
  658. }
  659. function getFieldName($sql,$fieldname) {
  660. $this->return_as_array=1;
  661. $res = $this->Query($sql);
  662. if($res) {
  663. $data = mysql_fetch_array($res);
  664. $this->return_as_array=0;
  665. return $data[$fieldname];
  666. } else {
  667. $this->TrackError();
  668. return false;
  669. }
  670. }
  671. function GetFieldNames($data,$table='') 
  672. {
  673. if(is_array($data)&&(count($data)>0)) {
  674. if(isset($data[0])) {
  675. if(is_object($data[0])) {
  676. $fields = get_object_vars($data[0]);
  677. return implode(",",array_keys($fields));
  678. } else if(is_array($data[0])) {
  679. return implode(",",array_keys($data[0]));
  680. }
  681. }
  682. } else {
  683. $fields = @mysql_list_fields($this->database, $table, $this->db); 
  684. $columns = @mysql_num_fields($fields); 
  685. for($i=0;$i<$columns;$i++) $data[] = @mysql_field_name($fields, $i);
  686. return implode(",",$data);
  687. }
  688. }
  689. function TimeStampExtract($date,$words,$as_array=true) 
  690. {
  691. if(!$as_array) $date = new stdclass;
  692. if ($words) {
  693. if(!$as_array) $date->year = substr($date,0,4); else $year = substr($date,0,4);
  694. if (substr($date,4,2)=="01") {if(!$as_array) $date->month="January"; else $month = "January"; }
  695. if (substr($date,4,2)=="02") {if(!$as_array) $date->month="February"; else $month = "February";}
  696. if (substr($date,4,2)=="03") {if(!$as_array) $date->month="March"; else $month = "March";}
  697. if (substr($date,4,2)=="04") {if(!$as_array) $date->month="April"; else $month = "April";}
  698. if (substr($date,4,2)=="05") {if(!$as_array) $date->month="May"; else $month = "May";}
  699. if (substr($date,4,2)=="06") {if(!$as_array) $date->month="June"; else $month = "June";}
  700. if (substr($date,4,2)=="07") {if(!$as_array) $date->month="July"; else $month = "July";}
  701. if (substr($date,4,2)=="08") {if(!$as_array) $date->month="August"; else $month = "August";}
  702. if (substr($date,4,2)=="09") {if(!$as_array) $date->month="September"; else $month = "September";}
  703. if (substr($date,4,2)=="10") {if(!$as_array) $date->month="October"; else $month = "October";}
  704. if (substr($date,4,2)=="11") {if(!$as_array) $date->month="November"; else $month = "November";}
  705. if (substr($date,4,2)=="12") {if(!$as_array) $date->month="December"; else $month = "December";}
  706. if(!$as_array) $date->day = substr($date,6,2); else $day = substr($date,6,2);
  707. if(!$as_array) $date->hour = substr($date,8,2); else $hour = substr($date,8,2);
  708. if(!$as_array) $date->minutes = substr($date,10,2); else $minutes = substr($date,10,2);
  709. if(!$as_array) $date->second = substr($date,12,2); else $second = substr($date,12,2);
  710. if($as_array) {
  711. return array("year"=>$year,"month"=>$month,"day"=>$day,"hour"=>$hour,"minutes"=>$minutes,"second"=>$second);
  712. } else {
  713. return $date;
  714. }
  715. } else {
  716. if(!$as_array) $date->year = substr($date,0,4); else $year = substr($date,0,4);
  717. if(!$as_array) $date->month = substr($date,4,2); else $month = substr($date,4,2);
  718. if(!$as_array) $date->day = substr($date,6,2); else $day = substr($date,6,2);
  719. if(!$as_array) $date->hour = substr($date,8,2); else $hour = substr($date,8,2);
  720. if(!$as_array) $date->minutes = substr($date,10,2); else $minutes = substr($date,10,2);
  721. if(!$as_array) $date->second = substr($date,12,2); else $second = substr($date,12,2);
  722. if($as_array) {
  723. return array("year"=>$year,"month"=>$month,"day"=>$day,"hour"=>$hour,"minutes"=>$minutes,"second"=>$second);
  724. } else {
  725. return $date;
  726. }
  727. }
  728. }
  729. // Uncomplete Function
  730. function ReadTableStruct($table_name) 
  731. {
  732. $result = @mysql_query("SELECT * FROM {$table_name}");
  733. $fields = @mysql_num_fields($result);
  734. $table = @mysql_field_table($result, 0);
  735. for ($i=0; $i < $fields; $i++) {
  736.      $type  = mysql_field_type($result, $i);
  737.      $name  = mysql_field_name($result, $i);
  738.      $len   = mysql_field_len($result, $i);
  739.      $flags = mysql_field_flags($result, $i);
  740.      echo $name . " " .$type." ". $len . " " . $flags . "<br>";
  741. }
  742. mysql_free_result($result);
  743. }
  744. function ListTables($pattern='') 
  745. {
  746. if($pattern=='') {
  747. $result = @mysql_list_tables($this->database);
  748. if (!$result) {
  749. echo "DB Error, could not list tablesn";
  750. echo 'MySQL Error: ' . mysql_error();
  751. exit;
  752. }
  753. while ($row = @mysql_fetch_row($result)) {
  754. $tables[] = $row[0];
  755. }
  756. @mysql_free_result($result);
  757. if(isset($tables)) return $tables; else return NULL;
  758. } else {
  759. $ret = $this->Query("SHOW TABLES LIKE '{$pattern}'",1);
  760. if(is_array($ret)&&count($ret)>0) {
  761. for($i=0;$i<count($ret);$i++) {
  762. list($k,$name)=each($ret[$i]);
  763. $tables[] = $name;
  764. }
  765. return $tables;
  766. } else return NULL;
  767. }
  768. }
  769. function TableExists($tableName) {
  770. $this->command = "Select * From {$tableName}";
  771. if($this->debug) echo "<hr><br><font face="Verdana" size="1">Executing QUERY STATEMENT on file : <b><font color=#FF0000>".basename($this->FILE)."</font></b> line <b><font color=#0000FF>".$this->LINE."</font></b><br>with SQL COMMAND : <font color=#FF0000>"<i>".$this->command."</i>"</font></font><br><hr>";
  772. if(@mysql_query($this->command))
  773. return true;
  774. else return false;
  775. }
  776. function ListFields($table_name) 
  777. {
  778. $fields = mysql_list_fields($this->database, $table_name, $this->db);
  779. $columns = mysql_num_fields($fields);
  780. for ($i = 0; $i < $columns; $i++) {
  781.     $field[] = mysql_field_name($fields, $i);
  782. }
  783. if(isset($field)) return $field; else return NULL;
  784. }
  785. function ListFieldNames($tablename,$style='ucfirst') {
  786. $result = mysql_query("SHOW COLUMNS FROM ".$tablename);
  787. if (!$result) {
  788. echo 'Could not run query: ' . mysql_error();
  789. exit;
  790. }
  791. if (mysql_num_rows($result) > 0) {
  792. while ($row = mysql_fetch_assoc($result)) {
  793. $fields[] = $style(strtolower($row['Field']));
  794. }
  795. }
  796. if(isset($fields)) return $fields; else return NULL;
  797. }
  798. function Close() {
  799. @mysql_close($this->db);
  800. if(!empty($this->onClose)) eval($this->onClose);
  801. $this->connected = false;
  802. }
  803. /*function getFieldName($sql,$fName)
  804. {
  805. $rec = @mysql_query($sql);
  806. $ret=mysql_fetch_array($rec);
  807. mysql_free_result($rec);
  808. return $ret[$fName];
  809. }*/
  810. function ExportTable($table_name,$fileoutput,$savefile=false,$compress=false) {
  811. if(isset($this->db)) {
  812. if($table_name=="*") {
  813. $tables = $this->ListTables();
  814. set_time_limit(0);
  815. for($i=0;$i<count($tables);$i++) {
  816. $pid = mysql_query("SHOW CREATE TABLE ".$tables[$i]);
  817. if($pid) {
  818. $struct = mysql_fetch_array($pid);
  819. $this->results = "DROP TABLE IF EXISTS ".$tables[$i].";rnrn";
  820. $this->results .= $struct[1];
  821. $contents = mysql_query("SELECT * FROM ".$tables[$i]);
  822. if($contents) {
  823. while($data = mysql_fetch_array($contents)) {
  824. $this->results .= "rnrnINSERT INTO ".$tables[$i]." VALUES (";
  825. if(isset($datas)) unset($datas);
  826. while(list($k,$v)=each($data)) {
  827. if(is_string($k))
  828. $datas[] = "'".$data[$k]."'";
  829. }
  830. if(isset($datas)&&is_array($datas)) 
  831. $this->results .= implode(",",$datas);
  832. $this->results .= ");";
  833. }
  834. if(function_exists('gzcompress')) {
  835. $compressed_data[] = gzcompress($this->results,9);
  836. }
  837. } else {
  838. trigger_error('Error while dumping table data due the following error : '.mysql_error(),E_USER_ERROR);
  839. }
  840. unset($this->results);
  841. } else {
  842. trigger_error('Cannot Execute SHOW CREATE TABLE due the following error : '.mysql_error(),E_USER_ERROR);
  843. }
  844. }
  845. $this->results = gzcompress(implode("(:EOF:)",$compressed_data));
  846. if($savefile) {
  847. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  848. header('Pragma: public');
  849. //header('Transfer-Encoding: chunked');
  850. header('Content-Type: application/octet-stream');
  851. header('Content-Length: '.strlen($this->results));
  852. header('Content-Disposition: attachment; filename="'.$fileoutput.'"');
  853. echo $this->results;
  854. }
  855. return TRUE;
  856. } else {
  857. $pid = mysql_query("SHOW CREATE TABLE ".$table_name);
  858. if($pid) {
  859. $struct = mysql_fetch_array($pid);
  860. $this->results = "DROP TABLE IF EXISTS ".$table_name.";rnrn";
  861. $this->results .= $struct[1];
  862. $contents = mysql_query("SELECT * FROM ".$table_name);
  863. if($contents) {
  864. while($data = mysql_fetch_array($contents)) {
  865. $this->results .= "rnrnINSERT INTO ".$table_name." VALUES (";
  866. if(isset($datas)) unset($datas);
  867. while(list($k,$v)=each($data)) {
  868. if(is_string($k))
  869. $datas[] = "'".$data[$k]."'";
  870. }
  871. if(isset($datas)&&is_array($datas)) 
  872. $this->results .= implode(",",$datas);
  873. $this->results .= ");";
  874. }
  875. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  876. header('Pragma: public');
  877. //header('Transfer-Encoding: chunked');
  878. header('Content-Type: application/octet-stream');
  879. header('Content-Length: '.strlen($this->results));
  880. header('Content-Disposition: attachment; filename="'.$table_name.'.sql"');
  881. echo $this->results;
  882. } else {
  883. trigger_error('Error while dumping table data due the following error : '.mysql_error(),E_USER_ERROR);
  884. }
  885. } else {
  886. trigger_error('Cannot Execute SHOW CREATE TABLE due the following error : '.mysql_error(),E_USER_ERROR);
  887. }
  888. }
  889. }
  890. }
  891. }
  892. ?>