php mysql数据库备份与数据还原类

则往数组里面添加数据,我们是通过循环数组的值,前端一直使用PHP5,作为简化的zend Framework的module,databasehost = ‘localhost’,只需要简单配置数据连接,的数据库备份

澳门京葡网站 1

例子1

前者一向利用PHP5,的确使用起来特别的爽,以后为了能在小编的虚构主机上跑,不得不改成PHP4的。这多少个库类小编原首发在PHPCHIAN,地址是

mysql教程i 数据连接类
class Mydb extends mysqli
{
    protected $_databasehost = ‘localhost’;
    protected $_databaseuser = ‘root’;
    protected $_databasepass = ‘123456’;
    protected $_databasename = ‘test’;
    protected $_databaseport = ‘3306’;
 protected $_fetch_method = MYSQLI_ASSOC;
 protected $_databasechar = ‘utf8’;
   
 /**
  * Enter description here…
  *
  * @param string $host
  * @param string $user
  * @param string $pass
  * @param string $name
  * @param int $port
  * @param string $char
  */
    function
__construct($host=”,$user=”,$pass=”,$name=”,$port=”,$char=”)
    {   
        $this->_databasehost = empty($host) ?
$this->_databasehost : $host;
        $this->_databaseuser = empty($user) ?
$this->_databaseuser : $user;
        $this->_databasepass = empty($pass) ?
$this->_databasepass : $pass;
        $this->_databasename = empty($name) ?
$this->_databasename : $name;
        $this->_databaseport = empty($port) ?
$this->_databaseport : $port;
  $this->_databasechar = empty($char) ? $this->_databasechar :
$char;
        try{
           
parent::__construct($this->_databasehost,$this->_databaseuser,
                $this->_databasepass,$this->_databasename,
                $this->_databaseport);
            if(mysqli_connect_errno()){
                die(“服务器连接战败”);
            }
            if(!parent::set_charset($this->_databasechar)){
                die(“数据库教程不可能使用utf-8编码”);
            }           
        }catch(Exception $e){
            die($e->getMessage());
        }   
    }
   

 /**
  *
表达,该类适用于小型的网站的数据库备份,内置mysql连接,只须求轻易布署数据连接
  * 及存贮备份的位置就能够。
  * 类实列化并且连接数据库未来可进行以下操作
  * get_db_table($database)    猎取富有数据表
  * export_sql($table,$subsection=0))  
生成sql文件,注意生成sql文件只保留到服务器目录,不提供下载
  * import_sql($dir)     苏醒数据只导入服务器目录下的sql文件
  *
该类制作轻便,可放肆传播,如何您对该类有何样建议,请发送邮件给小虾
  * @author 赵红健[游天小虾]
  * email:328742379@qq.com
  * qq交流群:69574955
聚义堂-网页制作交
  */

近期在写二个电子商务的网址,在做购物车的时候才开采php里面未有map这种数据结构,大家无法大致的经过一个hashmap来达成购物车,于是自身想开到数组,通过数组的值的格式化来展开编写制定。
也正是说,大家是经过循环数组的值,通过拆分值来决断数据是还是不是再次,比方笔者前几天浏览的货色的id是4,加多的数目是3,作者就在数组里面存放4-3,以往即使当境遇是id是4的时候,大家只是供给时改造数组里面这一个职分的数值,假诺id在数组里面拆分相比较都一纸空文,则往数组里面添加数据。删除购物车拟定id
的商品也是循环数组,那么些值,使用unset()来释放这么些值。
切实的贯彻代码:
—————————————————————————————————————————–

    昨日改写了数据库操作类,恰辛亏自家简化zend Framework也能用到。

 function selectDb($name)
 {
   $this->_databasename = empty($name) ? $this->_databasename :
$name;
   return $this->select_db($this->_databasename);
 }

 代码如下

 代码如下

    代码如下:

    /**
     * Enter description here…
     *
     */
 function __desstruct()
 {
  $this->close();
 }

class data {
 public   $data_dir    = “class/”; //备份文件存放的路径
 public   $transfer    
=””;   //不时寄放sql[切勿不要对该属性赋值,不然会扭转错误的sql语句]

<?php
session_start();
if($_SESSION[‘carts’]==””){
$carts=array();
array_push($carts, “0-0″);
$_SESSION[‘carts’]=$carts;
}
$method=$_GET[‘method’];
if($method==”add”){
$productId=$_GET[‘productid’];
$number=$_GET[‘number’];
$carts=$_SESSION[‘carts’];
$flag=”false”;
for($i=0;$i<sizeof($carts);$i++){
$pn=$carts[$i];
$pns=split(“-”, $pn);
if($pns[0]==$productId){
$carts[$i]=$productId.”-”.$number;
$flag=”true”;
$location=$i;
}
}
if($flag==”true”){
$carts[$location]=$productId.”-”.$number;
}else{
array_push($carts, $productId.”-”.$number);
}
$_SESSION[‘carts’]=$carts;
}
if($method==”delete”){
$productId=$_GET[‘productid’];
$carts=$_SESSION[‘carts’];
for($i=0;$i<sizeof($carts);$i++){
$pn=$carts[$i];
$pns=split(“-”, $pn);
if($pns[0]==$productId){
unset($carts[$i]);
}
}
$_SESSION[‘carts’]=$carts;
}
?>

<?php
/**
* filename: DB_Mysql.class.php
* @package:phpbean
* @author :feifengxlq<[email]feifengxlq@gmail.com[/email]>
* @copyright :Copyright 2006 feifengxlq
* @license:version 1.2
* create:2006-5-30
* modify:2006-10-19 by feifengxlq
* description:the interface of mysql.

* example:
* ////////////Select action (First mode)//////////////////////////////
$mysql=new DB_Mysql(“localhost”,”root”,”root”,”root”);    
$rs=$mysql->query(“select * from test”);
for($i=0;$i<$mysql->num_rows($rs);$i++)
    $record[$i]=$mysql->seek($i);
print_r($record);
$mysql->close();
* ////////////Select action (Second mode)//////////////////////////////
 $mysql=new DB_Mysql(“localhost”,”root”,”root”,”root”);
 $rs=$mysql->execute(“select * from test”);
 print_r($rs);
 $mysql->close();
* /////////////insert action////////////////////////////
   $mysql=new DB_Mysql(“localhost”,”root”,”root”,”root”);    
   $mysql->query(“insert into test(username) values(‘test from my DB_mysql’)”);
   printf(“%s”,$mysql->insert_id());
   $mysql->close();
*/
class mysql{

 /**
  * 设置再次来到值类型
  *
  * @param int $type
  */
 function setFetchMethod($type=2)
 {
澳门京葡网站,  switch($type)
  {
   case ‘1’:
    $this->_fetch_method = MYSQLI_NUM;
    break;
   case ‘2’:
    $this->_fetch_method = MYSQLI_ASSOC;
    break;
   case ‘3’:
    $this->_fetch_method = MYSQLI_BOTH;
    break;
   default:
    $this->_fetch_method = MYSQLI_ASSOC;
    break;
  }
 }

/**
 *数据库连接
 *@param string $host 数据库主机名
 *@param string $user 用户名
 *@param string $pwd  密码
 *@param string $db   选取数据库名
 *@param string $charset 编码格局
 */
 function connect_db($host,$user,$pwd,$db,$charset=’gbk’){
  if(!$conn = mysql_connect($host,$user,$pwd)){
   return false;
  }
  mysql_select_db($db);
  mysql_query(“set names $charset”);
  return true;
 }

———————————————————————————————————–

   /* private: connection parameters */
   var $host=”localhost”;
   var $database=””;
   var $user=”root”;
   var $password=””;

 /**
  * 插入前转义
  *
  * @param string|array $str
  * @return string
  */
 function quoteInto($str)
 {
  if(is_array($str)){
   foreach ($str as $key=>$val){
    $str[$key] = $this->real_escape_string($val);
   }
  }else{
   $str = $this->real_escape_string($str);
  }
  return $str;
 }

/**
 * 生成sql语句
 * @param   $table     要备份的表
 * @return  $tabledump 生成的sql语句
 */
 public function set_sql($table,$subsection=0,&$tabledom=”){
  $tabledom .= “drop table if exists $table “;
  $createtable = mysql_query(“show create table $table”);
  $create = mysql_fetch_row($createtable);
  $create[1] = str_replace(” “,””,$create[1]);
  $create[1] = str_replace(” “,””,$create[1]);

澳门京葡网站 1

   /* private: configuration parameters */
   var $pconnect=false;
   var $debug=false;

 /**
  * 插入
  *
  * @param string $table
  * @param array $fields
  * @return int
  * @deprecated 键名称叫插入的字段值 键值为插入的值
  */
 function insert($table,$fields)
 {
  if(empty($table)){return false;}
  if(empty($fields)){return false;}
  $insertFields = @implode(‘,’,@array_keys($fields));
  $arrayValues = @array_values($fields);
  $result = $this->quoteInto($arrayValues);
  $insertValues =
“‘”[email protected](“‘,'”,$result).”‘”;
  $sql = “INSERT INTO “.$table.”(“.$insertFields.”)
    VALUES(“.$insertValues.”)”;
  $this->query($sql);
  return $this->insert_id;
 }
 

  $tabledom  .= $create[1].”; “;

地方电子商务课程的时候做的一个简练的先后了,正是三个在线购物,但是依旧90多分的啊!~
其实假若是那体系似的顺序,都是概括的增加和删除改查系统,无非就是就对数据库的操作,大家要做的正是很好的落成那几个工作逻辑,以及能很好的统一计划有关的字段来决定,譬喻是货品的气象的决定,是上线照旧下线,照旧引入的。
    以往寻访连接数据库的代码吧!~
数据库配置代码,其实那个能够在xml配置文件之中安装:

   /* private: result array and current row number */
   var $link_id=0;
   var $query_id=0;
   var $record=array();

 /**
  * 更新
  *
  * @param string $table
  * @param array $fields
  * @param string $where
  * @return null
  * @deprecated 键名叫插入的字段值 键值为插入的值
  */
 function update($table,$fields,$where)
 {
  if(empty($table)){return false;}
  if(empty($fields)){return false;}
  if(empty($where)){return false;}
  foreach($fields as $key=>$v)
  {
   $condition[] = “{$key}='”.$this->quoteInto($v).”‘”;
  }
  $sql = “UPDATE “.$table.”
    SET “.implode(‘,’,$condition).” WHERE “.$where;
  $this->query($sql);
 }

  $rows = mysql_query(“select * from $table”);
  $numfields = mysql_num_fields($rows);
  $numrows = mysql_num_rows($rows);
  $n = 1;
  $sqlarry = array();
  while ($row = mysql_fetch_row($rows)){
     $comma = “”;
     $tabledom  .= “insert into $table values(“;
     for($i = 0; $i < $numfields; $i++)
     {
    $tabledom  .= $comma.”‘”.mysql_escape_string($row[$i]).”‘”;
    $comma = “,”;
     }
    $tabledom  .= “) “;
     if($subsection != 0 && strlen($this->transfer
)>=$subsection*1000){
       $sqlarry[$n]= $tabledom;
       $tabledom = ”; $n++;
     }
  }
  return $sqlarry;
   }

 代码如下

   /**
    * construct 
    *
    * @param string $host
    * @param string $user
    * @param string $password
    * @param string $database
    */
   function __construct($host=”localhost”,$user=”root”,$password=””,$database=””)
   {
       $this->set(“host”,$host);
       $this->set(“user”,$user);
       $this->set(“password”,$password);
       $this->set(“database”,$database);
       $this->connect();
   }

 /**
  * 获取一条数据
  *
  * @param string $sql
  * @return array 一维数组
  */
 function fetchRow($sql)
 {
  $result = $this->query($sql);
  $row = $result->fetch_array($this->_fetch_method);
  return $row;
 }

/**
 *列表数据库中的表
 *@param  database $database 要操作的数额库名
 *@return array    $dbarray  所列表的多寡库表
 */
 public function get_db_table($database){
  $result = mysql_list_tables($database);
  while($tmparry = mysql_fetch_row($result)){
   $dbarry[]  = $tmparry[0];
  }
  return $dbarry;
 }

class DbConfig{
var $databaseAddress=”180.153.178.89″;
var $dataBaseUser=”pantingwen”;
var $databasePassword=”753116″;
var $database=”sqlpantingwen”;
/**
* @return the $databaseAddress
*/
public function getDatabaseAddress() {
return $this->databaseAddress;
}
/**
* @return the $dataBaseUser
*/
public function getDataBaseUser() {
return $this->dataBaseUser;
}
/**
* @return the $databasePassword
*/
public function getDatabasePassword() {
return $this->databasePassword;
}
/**
* @return the $database
*/
public function getDatabase() {
return $this->database;
}
/**
* @param field_type $databaseAddress
*/
public function setDatabaseAddress($databaseAddress) {
$this->databaseAddress = $databaseAddress;
}
/**
* @param field_type $dataBaseUser
*/
public function setDataBaseUser($dataBaseUser) {
$this->dataBaseUser = $dataBaseUser;
}
/**
* @param field_type $databasePassword
*/
public function setDatabasePassword($databasePassword) {
$this->databasePassword = $databasePassword;
}
/**
* @param field_type $database
*/
public function setDatabase($database) {
$this->database = $database;
}
}
?>
数据库连接代码:
include_once
‘DbConfig.php’;
define(“conn”, getcon());
function getcon(){
$dbConfig=new DbConfig();
$con=mysql_connect($dbConfig->getDatabaseAddress(),$dbConfig->getDataBaseUser(),$dbConfig->getDatabasePassword());
return $con;
}
/**
* 选取一款数据库
* Enter description here …
*/
function _select_db(){
$dbConfig=new DbConfig();
if(!mysql_select_db($dbConfig->getDatabase())){
exit(‘找不到钦定的多寡库’);
}
}
/**
* 设置字符集
* Enter description here …
*/
function _set_names(){
if(!mysql_query(‘set names utf8’)){
exit(‘字符集错误’);
}
}
function _query($_sql){
_select_db();
_set_names();
if(!$result=mysql_query($_sql,conn)){
echo mysql_error();
}
return $result;
}
/**
* 只好是赢得三个数据组
* Enter description here …
* @param unknown_type $_sql
*/
function _fetch_array($_sql){
return mysql_fetch_array(_query($_sql),MYSQL_ASSOC);
}
/**
* 重临数据组
* Enter description here …
* @param unknown_type $_sql
*/
function _fetch_array_list($_result){
return mysql_fetch_array($_result,MYSQL_ASSOC);
}
/**
* 影响到到的记录数
* Enter description here …
*/
function _affect_rows(){
return mysql_affected_rows();
}
/**
* 剖断是否存在数量
* Enter description here …
* @param unknown_type $_sql
* @param unknown_type $_info
*/
function _is_repeat($_sql,$_info){
if(_fetch_array($_sql)){
}
}
function _close(){
if(!mysql_close(_conn)){
exit(‘关闭卓殊’);
}
}
?>

   /**
    * set the value for the param of this class
    *
    * @param string $var
    * @param string $value
    */
   function set($var,$value)
   {
       $this->$var=$value;
   }

 /**
  * 获取全部数目
  *
  * @param string $sql
  * @return array 二维数组
  */
 function fetchAll($sql)
 {
  $result = $this->query($sql);
  while($row = $result->fetch_array($this->_fetch_method))
  {
   $data[] = $row;
  }
  return $data;
 }

/**
 *证实目录是或不是可行
 *@param diretory $dir
 *@return booln
 */
 function check_write_dir($dir){
  if(!is_dir($dir)) {@mkdir($dir, 0777);}
  if(is_dir($dir)){
   if($link = opendir($dir)){
    $filearry = scandir($dir);
    for($i=0;$i<count($filearry);$i++){
     if($filearry[$i]!=’.’ || $filearry != ‘..’){
      @unlink($dir.$filearry[$i]);
     }
    }
   }
  }
  return true;
 }
/**
 *将数据写入到文件中
 *@param file $filename 文件名
 *@param string $str   要写入的新闻
 *@return booln 写入成功则赶回true,不然false
 */
 private function write_sql($filename,$str){
  $re= true;
  if(!@$fp=fopen($filename,”w+”))
{$re=false; echo “在开荒文件时遇上错误,备份失利!”;}
  if(!@fwrite($fp,$str)) {$re=false; echo
“在写入音信时遇见错误,备份退步!”;}
  if(!@fclose($fp)) {$re=false; echo “在闭馆文件
时蒙受错误,备份失利!”;}
  return $re;
 }