欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php导入sql文件

程序员文章站 2023-02-28 12:07:27
php导入sql文件 sql php php导入sql文件 基本思路 1.打开sql文件,放入一个变量(字符串类型)当中 2.使用正则替换掉当中的注释(“--”与“...
php导入sql文件

sql php


php导入sql文件

基本思路

1.打开sql文件,放入一个变量(字符串类型)当中

2.使用正则替换掉当中的注释(“--”与“/**/”)

3.使用explode分割成为一个数组并去除每行的空格

4.链接数据库之后使用my_query()执行sql

代码

// +------------------------------------------------------------------------------------------// | Author: longDD // +------------------------------------------------------------------------------------------// | There is no true,no evil,no light,there is only power.// +------------------------------------------------------------------------------------------// | Description: import sql Dates: 2014-08-07// +------------------------------------------------------------------------------------------class ImportSql {    /** @var $content 数据库连接 */    protected $connect = null;    /** @var $db 数据库对象 */    protected $db = null;    /** @var $sqlFile sql文件 */    public $sqlFile = "";    /** @array @sqlArr sql语句数组 */    public $sqlArr = array();    /**      * 构造函数     *      * @param string $host 主机地址     * @param string $user 用户名     * @param string $pw 密码     * @param $db_name 数据库名称     * @return void     */    public function __construct($host, $user, $pw, $db_name)     {        /** 连接数据库 */        $this->connect = mysql_connect($host, $user, $pw) or die("Could not connect: " . mysql_error());        /** 选中数据库 */        $this->db = mysql_select_db($db_name, $this->connect) or die("Yon can not select the table:" . mysql_error());    }    /**      * 导入sql文件     *      * @param string $url 文件路径     * @return true 导入成返回true     */    public function Import($url)     {        if(!file_exists($url))        {            exit("文件不存在!");        }        $this->sqlFile = file_get_contents($url);        if (!$this->sqlFile)         {            exit("打开文件错误!");        }         else         {            $this->GetSqlArr();            if ($this->Runsql())             {                return true;            }        }    }    /**     * 获取sql语句数组     *      * @return void     */    public function GetSqlArr()     {        /** 去除注释 */        $str = $this->sqlFile;        $str = preg_replace('/--.*/i', '', $str);        $str = preg_replace('/\/\*.*\*\/(\;)?/i', '', $str);        /** 去除空格 创建数组 */        $str = explode(";\n", $str);        foreach ($str as $v)         {            $v = trim($v);            if (empty($v))             {                continue;            }             else             {                $this->sqlArr[] = $v;            }        }    }    /**     * 执行sql文件     *      * @return true 执行成功返回true     */    public function RunSql()     {        /** 开启事务 */        if (mysql_query('BEGIN'))        {            foreach ($this->sqlArr as $k => $v)            {                if (!mysql_query($v))                 {                    /** 回滚 */                    mysql_query('ROLLBACK');                    exit("sql语句错误:第" . $k . "行" . mysql_error());                }            }            /** 提交事务 */            mysql_query('COMMIT');            return true;        }        else        {            exit('无法开启事务!');        }    }}// +------------------------------------------------------------------------------------------// | End of ImportSql class// +------------------------------------------------------------------------------------------/*** This is a example.*/header("Content-type:text/html;charset=utf-8");$sql = new ReadSql("localhost", "root", "", "log_db");$rst = $sql->Import("./log_db.sql");if ($rst) {   echo "Success!";}// +------------------------------------------------------------------------------------------// | End of file ImportSql.php// +------------------------------------------------------------------------------------------// | Location: ./ImportSql.php// +------------------------------------------------------------------------------------------