php导入sql文件
程序员文章站
2022-06-04 08:20:39
...
php导入sql文件
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
// +------------------------------------------------------------------------------------------
上一篇: MAT安装及使用教程
下一篇: MySQL几个特别语法示例_MySQL
推荐阅读
-
挖掘PHP上传文件类型原理实现_PHP教程
-
php图片文件,下载文件,防盗链设置方法
-
请忽嘲笑:含有php脚本的文件,后缀名为怎么
-
crontab定时执行php file_put_contents无法新建并写到一个文件内 但是自己执行是可以成功的
-
php inc文件使用的风险和注意事项_PHP
-
刚学extjs 导入文件的时候 一直报错 求大神解决_html/css_WEB-ITnose
-
fckeditor上传文件按日期存放及重命名方法,fckeditor上传文件_PHP教程
-
如何利用PHP执行.SQL文件
-
php 文件下载 出现下载文件内容乱码损坏的解决方法
-
图解找出PHP配置文件php.ini的路径的方法,