php导入sql文件

基本思路:

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

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

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

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

<?php

class ReadSql {

    //数据库连接
    protected $connect = null;
    //数据库对象
    protected $db = null;
    //sql文件
    public $sqlFile = "";
    //sql语句集
    public $sqlArr = array();

    public function __construct($host, $user, $pw, $db_name) {
        $host = empty($host) ? C("DB_HOST") : $host;
        $user = empty($user) ? C("DB_USER") : $user;
        $pw = empty($pw) ? C("DB_PWD") : $pw;
        $db_name = empty($db_name) ? C("DB_NAME") : $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文件
    public function Import($url) {

        $this->sqlFile = file_get_contents($url);
        if (!$this->sqlFile) {
            exit("打开文件错误");
        } else {
            $this->GetSqlArr();
            if ($this->Runsql()) {
                return true;
            }
        }
    }

    //获取sql语句数组
    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文件
    public function RunSql() {

        foreach ($this->sqlArr as $k => $v) {
            if (!mysql_query($v)) {
                exit("sql语句错误:第" . $k . "行" . mysql_error());
            }
        }
        return true;
    }

}

//范例:
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!";
}
?>

希望对你有所帮助!^_^~