sql php
1.打开sql文件,放入一个变量(字符串类型)当中
2.使用正则替换掉当中的注释(“--”与“/**/”)
3.使用explode分割成为一个数组并去除每行的空格
4.链接数据库之后使用my_query()执行sql
立即学习“PHP免费学习笔记(深入)”;
<ol class="linenums"><li class="L0"><?php<li class="L1"><li class="L2">// +------------------------------------------------------------------------------------------<li class="L3">// | Author: longDD <longdd_love@163.com><li class="L4">// +------------------------------------------------------------------------------------------<li class="L5">// | There is no true,no evil,no light,there is only power.<li class="L6">// +------------------------------------------------------------------------------------------<li class="L7">// | Description: import sql Dates: 2014-08-07<li class="L8">// +------------------------------------------------------------------------------------------<li class="L9"><li class="L0"><li class="L1">class ImportSql <li class="L2">{<li class="L3"><li class="L4"> /** @var $content 数据库连接 */<li class="L5"> protected $connect = null;<li class="L6"> /** @var $db 数据库对象 */<li class="L7"> protected $db = null;<li class="L8"> /** @var $sqlFile sql文件 */<li class="L9"> public $sqlFile = "";<li class="L0"> /** @array @sqlArr sql语句数组 */<li class="L1"> public $sqlArr = array();<li class="L2"><li class="L3"> /** <li class="L4"> * 构造函数<li class="L5"> * <li class="L6"> * @param string $host 主机地址<li class="L7"> * @param string $user 用户名<li class="L8"> * @param string $pw 密码<li class="L9"> * @param $db_name 数据库名称<li class="L0"> * @return void<li class="L1"> */<li class="L2"> public function __construct($host, $user, $pw, $db_name) <li class="L3"> {<li class="L4"> /** 连接数据库 */<li class="L5"> $this->connect = mysql_connect($host, $user, $pw) or die("Could not connect: " . mysql_error());<li class="L6"> /** 选中数据库 */<li class="L7"> $this->db = mysql_select_db($db_name, $this->connect) or die("Yon can not select the table:" . mysql_error());<li class="L8"> }<li class="L9"><li class="L0"> /** <li class="L1"> * 导入sql文件<li class="L2"> * <li class="L3"> * @param string $url 文件路径<li class="L4"> * @return true 导入成返回true<li class="L5"> */<li class="L6"> public function Import($url) <li class="L7"> {<li class="L8"> if(!file_exists($url))<li class="L9"> {<li class="L0"> exit("文件不存在!");<li class="L1"> }<li class="L2"><li class="L3"> $this->sqlFile = file_get_contents($url);<li class="L4"><li class="L5"> if (!$this->sqlFile) <li class="L6"> {<li class="L7"> exit("打开文件错误!");<li class="L8"> } <li class="L9"> else <li class="L0"> {<li class="L1"> $this->GetSqlArr();<li class="L2"><li class="L3"> if ($this->Runsql()) <li class="L4"> {<li class="L5"> return true;<li class="L6"> }<li class="L7"> }<li class="L8"> }<li class="L9"><li class="L0"> /**<li class="L1"> * 获取sql语句数组<li class="L2"> * <li class="L3"> * @return void<li class="L4"> */<li class="L5"> public function GetSqlArr() <li class="L6"> {<li class="L7"> /** 去除注释 */<li class="L8"> $str = $this->sqlFile;<li class="L9"> $str = preg_replace('/--.*/i', '', $str);<li class="L0"> $str = preg_replace('/\/\*.*\*\/(\;)?/i', '', $str);<li class="L1"><li class="L2"> /** 去除空格 创建数组 */<li class="L3"> $str = explode(";\n", $str);<li class="L4"><li class="L5"> foreach ($str as $v) <li class="L6"> {<li class="L7"> $v = trim($v);<li class="L8"><li class="L9"> if (empty($v)) <li class="L0"> {<li class="L1"> continue;<li class="L2"> } <li class="L3"> else <li class="L4"> {<li class="L5"> $this->sqlArr[] = $v;<li class="L6"> }<li class="L7"> }<li class="L8"> }<li class="L9"><li class="L0"> /**<li class="L1"> * 执行sql文件<li class="L2"> * <li class="L3"> * @return true 执行成功返回true<li class="L4"> */<li class="L5"> public function RunSql() <li class="L6"> {<li class="L7"> /** 开启事务 */<li class="L8"> if (mysql_query('BEGIN'))<li class="L9"> {<li class="L0"> foreach ($this->sqlArr as $k => $v)<li class="L1"> {<li class="L2"> if (!mysql_query($v)) <li class="L3"> {<li class="L4"> /** 回滚 */<li class="L5"> mysql_query('ROLLBACK');<li class="L6"><li class="L7"> exit("sql语句错误:第" . $k . "行" . mysql_error());<li class="L8"> }<li class="L9"> }<li class="L0"><li class="L1"> /** 提交事务 */<li class="L2"> mysql_query('COMMIT');<li class="L3"> return true;<li class="L4"> }<li class="L5"> else<li class="L6"> {<li class="L7"> exit('无法开启事务!');<li class="L8"> }<li class="L9"> }<li class="L0"><li class="L1">}<li class="L2"><li class="L3">// +------------------------------------------------------------------------------------------<li class="L4">// | End of ImportSql class<li class="L5">// +------------------------------------------------------------------------------------------<li class="L6"><li class="L7"><li class="L8">/**<li class="L9">* This is a example.<li class="L0">*/<li class="L1"><li class="L2">header("Content-type:text/html;charset=utf-8");<li class="L3"><li class="L4">$sql = new ReadSql("localhost", "root", "", "log_db");<li class="L5"><li class="L6">$rst = $sql->Import("./log_db.sql");<li class="L7"><li class="L8">if ($rst) <li class="L9">{<li class="L0"> echo "Success!";<li class="L1">}<li class="L2"><li class="L3">// +------------------------------------------------------------------------------------------<li class="L4">// | End of file ImportSql.php<li class="L5">// +------------------------------------------------------------------------------------------<li class="L6">// | Location: ./ImportSql.php<li class="L7">// +------------------------------------------------------------------------------------------
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号