/trunk/Tpblog/Admin/Lib/ORG/dataDB.class.php
PHP | 282 lines | 182 code | 24 blank | 76 comment | 17 complexity | e706aedcf4c32301d667054c35dcd7d2 MD5 | raw file
- <?php
- /**
- * ??????(????????)
- * @copyright (c) 2008, tpblog All Rights Reserved
- * @version tpblog-2.7.0
- *
- */
- class MySql{
- var $queryCount = 0;
- var $conn;
- var $result;
- /*????*/
- function __construct($dbHost = '', $dbUser = '', $dbPass = '', $dbName = '')
- {
- if(!$this->conn = @mysql_connect($dbHost, $dbUser, $dbPass))
- {
- echo("???????,???mysql???????????");
- }
- if($this->getMysqlVersion() >'4.1')
- {
- mysql_query("SET NAMES 'utf8'");
- }
-
- @mysql_select_db($dbName, $this->conn) OR die("????????");
- }
-
- /**
- * ??????
- *
- * @param string $sql
- * @return boolean
- */
- function query($sql)
- {
- $this->result = @ mysql_query($sql,$this->conn);
- $this->queryCount++;
- if(!$this->result)
- {
- echo("SQL???????$sql <br />".$this->geterror());
- } else {
- return $this->result;
- }
- }
-
- /**
- * ?????????????????????
- *
- * @param resource $query
- * @return array
- */
- function fetch_array($query)
- {
- return mysql_fetch_array($query);
- }
-
- /**
- * ??????????
- *
- * @param resource $query
- * @return integer
- */
- function fetch_row($query)
- {
- return mysql_fetch_row($query);
- }
-
- /**
- * ??????
- *
- * @param resource $query
- * @return integer
- */
- function num_rows($query)
- {
- return mysql_num_rows($query);
- }
-
- /**
- * ???????????
- *
- * @param resource $query
- * @return integer
- */
- function num_fields($query)
- {
- return mysql_num_fields($query);
- }
- /**
- * ????? INSERT ????? ID
- *
- * @return integer
- */
- function insert_id()
- {
- return mysql_insert_id($this->conn);
- }
-
-
- function fetch_one_array($sql)
- {
- $this->result = $this->query($sql);
- return $this->fetch_array($this->result);
- }
-
- /**
- * ??mysql??
- *
- * @return unknown
- */
- function geterror()
- {
- return mysql_error();
- }
-
- /**
- * ?????????
- *
- * @return string
- */
- function getMysqlVersion()
- {
- return mysql_get_server_info();
- }
-
- /**
- * ???????
- *
- * @return boolean
- */
- function close()
- {
- return mysql_close($this->conn);
- }
-
- /**
- * ?????
- *
- * @return file
- */
-
- function dataBak($table)
- {
- $sql = "DROP TABLE IF EXISTS $table;\n";
- $createtable = $this->query("SHOW CREATE TABLE $table");
- $create = $this->fetch_row($createtable);
- $sql .= $create[1].";\n\n";
- $rows = $this->query("SELECT * FROM $table");
- $numfields = $this->num_fields($rows);
- $numrows = $this->num_rows($rows);
- while ($row = $this->fetch_row($rows))
- {
- $comma = "";
- $sql .= "INSERT INTO $table VALUES(";
- for($i = 0; $i < $numfields; $i++)
- {
- $sql .= $comma."'".mysql_escape_string($row[$i])."'";
- $comma = ",";
- }
- $sql .= ");\n";
- }
- $sql .= "\n";
- return $sql;
- }
- /**
- * ?????
- *
- *
- */
-
- function beifen($bakfname,$table_box)
- {
- if(!preg_match("/^[a-zA-Z0-9_]+$/",$bakfname))
- {
- echo('????????');
- }
- $filename = './bakup/'.$bakfname.'.sql';
- // ????????????
- $sqldump = '';
- foreach($table_box as $table)
- {
- $sqldump .=$this->dataBak($table);
- }
- // ??????????????
- if(trim($sqldump))
- {
- $sqldump = "#emlog_$edition database bakup file\n#".date('Y-m-d H:i')."\n$sqldump";
- //??????
- @$fp = fopen($filename, "w+");
- if ($fp)
- {
- @flock($fp, 3);
- if(@!fwrite($fp, $sqldump))
- {
- @fclose($fp);
- echo( '????,??????????????');
- }else{
- //echo('??????????');
- // exit();
- return 1;
- }
- }else{
- echo('?????????'. $filename .'???????????,?????????');
- }
- }else{
- echo('?????????');
- }
- }
-
- function bakindata($filename)
- {
- // global $db,$DB;
- $setchar = $this->getMysqlVersion() > '4.1'?"ALTER DATABASE {$db} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;":'';
- $sql = file($filename);
- array_unshift($sql,$setchar);
- $query = '';
- $num = 0;
- foreach($sql as $key => $value)
- {
- $value = trim($value);
- if(!$value || $value[0]=='#') continue;
- if(eregi("\;$",$value))
- {
- $query .= $value;
- if(eregi("^CREATE",$query))
- {
- $query = preg_replace("/\DEFAULT CHARSET=([a-z0-9]+)/is",'',$query);
- }
- $this->query($query);
- $query = '';
- } else{
- $query .= $value;
- }
- }
- }
-
- function huifu($sqlfile)
- {
- //$sqlfile = isset($_GET['sqlfile'])?$_GET['sqlfile']:'';
- if (!file_exists($sqlfile))
- {
- echo('?????');
- }else
- {
- $extension = strtolower(substr(strrchr($sqlfile,'.'),1));
- if ($extension !== 'sql')
- {
- echo('?????????, ???? *.sql ??');
- }
- $fp = fopen($sqlfile,'rb');
- $bakinfo = fread($fp,200);
- fclose($fp);
- if (!strstr($bakinfo,"emlog_$edition"))
- {
- echo("????! ??????? tpblog {$edition} ?????!");
- }
-
- }
- $fp = fopen($sqlfile, 'rb');
- $sql = fread($fp, filesize($sqlfile));
- fclose($fp);
- unset($sql);
- $this->bakindata($sqlfile);
- //echo('??????');
- }
-
-
- function delAll($filename)
- {
- //????????
- foreach($filename as $value)
- {
- unlink($value);
- }
- echo('????????!');
- }
-
-
-
- }
-
-
- ?>