php mysql 导入_php 导入sql文件到数据库

* Created by PhpStorm.

* User: Administrator

* Date: 2018/10/13

* Time: 10:25*/

classImportData{//数据库信息

private $dbhost;private $dbuser;private $dbpw;private $dbport;private $dbname;private $dbcharset;private $link;private $tablepre;public function __construct($data)

{$this->dbhost=isset($data['dbhost'])?$data['dbhost']:'';$this->dbuser=isset($data['dbuser'])?$data['dbuser']:'';$this->dbpw=isset($data['dbpw'])?$data['dbpw']:'';$this->dbport=isset($data['dbport'])?$data['dbport']:'3306';$this->dbname=isset($data['dbname'])?$data['dbname']:'';$this->dbcharset=isset($data['dbcharset'])?$data['dbcharset']:'utf8';$this->tablepre=isset($data['tablepre'])?$data['tablepre']:'';$link_info=$this->link_data();if(!$link_info['status']){return $link_info;

}

}//链接设置数据库

protected functionlink_data(){$link=mysqli_connect($this->dbhost,$this->dbuser,$this->dbpw,null,$this->dbport);if(!$link)return array('status'=>false,'info'=>'数据库连接失败');else

$this->link=$link;//mysql 版本

//获得mysql版本

$version = mysqli_get_server_info($this->link);//设置字符集

if($version > '4.1' && $this->dbcharset) {mysqli_query($link, "SET NAMES {$this->dbcharset}");

}//选择数据库

mysqli_select_db($this->link,$this->dbname);

}//导数据

/**

* @param $dbfile 要导入的sql数据文件

* @param string $dbfile_table_pre 导入的sql文件的表前缀

* @return array*/

public function import_data($dbfile,$dbfile_table_pre='zq_'){if(!file_exists($dbfile)){return array('status'=>false,'info'=>'数据库文件不存在');

}$sql = file_get_contents($dbfile);$status=$this->_sql_execute($this->link, $sql,$dbfile_table_pre);if($status){//echo '导入数据库成功';

return array('status'=>true,'info'=>'导入数据库成功');

}else{return array('status'=>true,'info'=>'导入数据库失败');//echo '导入数据库失败';

}

}/**

* @param $link 数据库链接

* @param $sql 要导入的sql语句

* @param $dbfile_table_pre 导入的sql文件的表前缀

* @return bool*/

protected function _sql_execute($link,$sql,$dbfile_table_pre) {$sqls =$this-> _sql_split($link,$sql,$dbfile_table_pre);if(is_array($sqls))

{foreach($sqls as $sql)

{if(trim($sql) != '')

{mysqli_query($link,$sql);

}

}

}else{mysqli_query($link,$sqls);

}return true;

}/**

* @param $link 表链接对象

* @param $sql 导入的sql

* @param $dbfile_table_pre sql文件中的sql表前缀

* @return array*/

protected function _sql_split($link,$sql,$dbfile_table_pre) {if(mysqli_get_server_info($link) > '4.1' && $this->dbcharset)

{$sql = preg_replace("/TYPE=(InnoDB|MyISAM|MEMORY)( DEFAULT CHARSET=[^; ]+)?/", "ENGINE=\\1 DEFAULT CHARSET=".$this->dbcharset,$sql);

}//如果有表前缀就替换现有的前缀

if($this->tablepre){$sql=str_replace($dbfile_table_pre, $this->tablepre, $sql);

}$sql = str_replace("\r", "\n", $sql);$ret = array();$num = 0;$queriesarray = explode(";\n", trim($sql));unset($sql);foreach($queriesarray as $query)

{$ret[$num] = '';$queries = explode("\n", trim($query));$queries = array_filter($queries);foreach($queries as $query)

{$str1 = substr($query, 0, 1);if($str1 != '#' && $str1 != '-') $ret[$num] .= $query;

}$num++;

}return $ret;

}

}/**

* 初始化数据库信息*/

$data=array('dbhost'=>'127.0.0.1'

,'dbuser'=>'root'

,'dbpw'=>'root'

,'dbname'=>'phptest');$obj=new ImportData($data);$obj->import_data('./zq.sql');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值