PageRenderTime 23ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Tpblog/Admin/Lib/ORG/dataDB.class.php

http://tpblog.googlecode.com/
PHP | 282 lines | 182 code | 24 blank | 76 comment | 17 complexity | e706aedcf4c32301d667054c35dcd7d2 MD5 | raw file
  1. <?php
  2. /**
  3. * ??????(????????)
  4. * @copyright (c) 2008, tpblog All Rights Reserved
  5. * @version tpblog-2.7.0
  6. *
  7. */
  8. class MySql{
  9. var $queryCount = 0;
  10. var $conn;
  11. var $result;
  12. /*????*/
  13. function __construct($dbHost = '', $dbUser = '', $dbPass = '', $dbName = '')
  14. {
  15. if(!$this->conn = @mysql_connect($dbHost, $dbUser, $dbPass))
  16. {
  17. echo("???????,???mysql???????????");
  18. }
  19. if($this->getMysqlVersion() >'4.1')
  20. {
  21. mysql_query("SET NAMES 'utf8'");
  22. }
  23. @mysql_select_db($dbName, $this->conn) OR die("????????");
  24. }
  25. /**
  26. * ??????
  27. *
  28. * @param string $sql
  29. * @return boolean
  30. */
  31. function query($sql)
  32. {
  33. $this->result = @ mysql_query($sql,$this->conn);
  34. $this->queryCount++;
  35. if(!$this->result)
  36. {
  37. echo("SQL???????$sql <br />".$this->geterror());
  38. } else {
  39. return $this->result;
  40. }
  41. }
  42. /**
  43. * ?????????????????????
  44. *
  45. * @param resource $query
  46. * @return array
  47. */
  48. function fetch_array($query)
  49. {
  50. return mysql_fetch_array($query);
  51. }
  52. /**
  53. * ??????????
  54. *
  55. * @param resource $query
  56. * @return integer
  57. */
  58. function fetch_row($query)
  59. {
  60. return mysql_fetch_row($query);
  61. }
  62. /**
  63. * ??????
  64. *
  65. * @param resource $query
  66. * @return integer
  67. */
  68. function num_rows($query)
  69. {
  70. return mysql_num_rows($query);
  71. }
  72. /**
  73. * ???????????
  74. *
  75. * @param resource $query
  76. * @return integer
  77. */
  78. function num_fields($query)
  79. {
  80. return mysql_num_fields($query);
  81. }
  82. /**
  83. * ????? INSERT ????? ID
  84. *
  85. * @return integer
  86. */
  87. function insert_id()
  88. {
  89. return mysql_insert_id($this->conn);
  90. }
  91. function fetch_one_array($sql)
  92. {
  93. $this->result = $this->query($sql);
  94. return $this->fetch_array($this->result);
  95. }
  96. /**
  97. * ??mysql??
  98. *
  99. * @return unknown
  100. */
  101. function geterror()
  102. {
  103. return mysql_error();
  104. }
  105. /**
  106. * ?????????
  107. *
  108. * @return string
  109. */
  110. function getMysqlVersion()
  111. {
  112. return mysql_get_server_info();
  113. }
  114. /**
  115. * ???????
  116. *
  117. * @return boolean
  118. */
  119. function close()
  120. {
  121. return mysql_close($this->conn);
  122. }
  123. /**
  124. * ?????
  125. *
  126. * @return file
  127. */
  128. function dataBak($table)
  129. {
  130. $sql = "DROP TABLE IF EXISTS $table;\n";
  131. $createtable = $this->query("SHOW CREATE TABLE $table");
  132. $create = $this->fetch_row($createtable);
  133. $sql .= $create[1].";\n\n";
  134. $rows = $this->query("SELECT * FROM $table");
  135. $numfields = $this->num_fields($rows);
  136. $numrows = $this->num_rows($rows);
  137. while ($row = $this->fetch_row($rows))
  138. {
  139. $comma = "";
  140. $sql .= "INSERT INTO $table VALUES(";
  141. for($i = 0; $i < $numfields; $i++)
  142. {
  143. $sql .= $comma."'".mysql_escape_string($row[$i])."'";
  144. $comma = ",";
  145. }
  146. $sql .= ");\n";
  147. }
  148. $sql .= "\n";
  149. return $sql;
  150. }
  151. /**
  152. * ?????
  153. *
  154. *
  155. */
  156. function beifen($bakfname,$table_box)
  157. {
  158. if(!preg_match("/^[a-zA-Z0-9_]+$/",$bakfname))
  159. {
  160. echo('????????');
  161. }
  162. $filename = './bakup/'.$bakfname.'.sql';
  163. // ????????????
  164. $sqldump = '';
  165. foreach($table_box as $table)
  166. {
  167. $sqldump .=$this->dataBak($table);
  168. }
  169. // ??????????????
  170. if(trim($sqldump))
  171. {
  172. $sqldump = "#emlog_$edition database bakup file\n#".date('Y-m-d H:i')."\n$sqldump";
  173. //??????
  174. @$fp = fopen($filename, "w+");
  175. if ($fp)
  176. {
  177. @flock($fp, 3);
  178. if(@!fwrite($fp, $sqldump))
  179. {
  180. @fclose($fp);
  181. echo( '????,??????????????');
  182. }else{
  183. //echo('??????????');
  184. // exit();
  185. return 1;
  186. }
  187. }else{
  188. echo('?????????'. $filename .'???????????,?????????');
  189. }
  190. }else{
  191. echo('?????????');
  192. }
  193. }
  194. function bakindata($filename)
  195. {
  196. // global $db,$DB;
  197. $setchar = $this->getMysqlVersion() > '4.1'?"ALTER DATABASE {$db} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;":'';
  198. $sql = file($filename);
  199. array_unshift($sql,$setchar);
  200. $query = '';
  201. $num = 0;
  202. foreach($sql as $key => $value)
  203. {
  204. $value = trim($value);
  205. if(!$value || $value[0]=='#') continue;
  206. if(eregi("\;$",$value))
  207. {
  208. $query .= $value;
  209. if(eregi("^CREATE",$query))
  210. {
  211. $query = preg_replace("/\DEFAULT CHARSET=([a-z0-9]+)/is",'',$query);
  212. }
  213. $this->query($query);
  214. $query = '';
  215. } else{
  216. $query .= $value;
  217. }
  218. }
  219. }
  220. function huifu($sqlfile)
  221. {
  222. //$sqlfile = isset($_GET['sqlfile'])?$_GET['sqlfile']:'';
  223. if (!file_exists($sqlfile))
  224. {
  225. echo('?????');
  226. }else
  227. {
  228. $extension = strtolower(substr(strrchr($sqlfile,'.'),1));
  229. if ($extension !== 'sql')
  230. {
  231. echo('?????????, ???? *.sql ??');
  232. }
  233. $fp = fopen($sqlfile,'rb');
  234. $bakinfo = fread($fp,200);
  235. fclose($fp);
  236. if (!strstr($bakinfo,"emlog_$edition"))
  237. {
  238. echo("????! ??????? tpblog {$edition} ?????!");
  239. }
  240. }
  241. $fp = fopen($sqlfile, 'rb');
  242. $sql = fread($fp, filesize($sqlfile));
  243. fclose($fp);
  244. unset($sql);
  245. $this->bakindata($sqlfile);
  246. //echo('??????');
  247. }
  248. function delAll($filename)
  249. {
  250. //????????
  251. foreach($filename as $value)
  252. {
  253. unlink($value);
  254. }
  255. echo('????????!');
  256. }
  257. }
  258. ?>