phpmyadmin导入php,php读取sql文件导入数据库(支持phpmyadmin导出)_PHP教程

function into_sql($file)

{

global $mysql教程_host,$mysql_user,$mysql_password,$mysql_db,$mysql_table_prefix,$dbcharset;//获取数据库配置信息

mysql_connect($mysql_host,$mysql_user,$mysql_password);

mysql_select_db($mysql_db);

if( mysql_get_server_info() < '4.1' )

//返回 link_identifier 所使用的服务器版本。如果省略 link_identifier,则使用上一个打开的连接。

{

$dbcharset=”;//设置字符集,如果mysql版本低于4.1,则不设置字符集信息

}

if(empty($dbcharset))

{

$dbcharset=’gbk’;

}

$dbcharset && mysql_query(“set names ‘$dbcharset'”);// 设置字符集

if( mysql_get_server_info() > ‘5.0’ )

{

mysql_query(“set sql_mode=””);

}

$file2=file_get_contents($file);

$file2=iconv(“utf-8″,”gbk”,$file2);

$file2=str_replace(“seo教程_”,$mysql_table_prefix,$file2);//将文件中数据库表前缀换成用户设定的前缀

$file2=explode(“n”,$file2);//将文件内容按行读入到数组

$c1=count($file2);

for($j=0;$j

{

$ck=substr($file2[$j],0,4);//取每行的前4个字符

if( ereg(“#”,$ck)||ereg(“–“,$ck) )//去掉注释

{

continue;

}

$arr[]=$file2[$j];//将去掉注释的文件内容按行读入数组$arr,数组每个元素对应一行

}

$read=implode(“n”,$arr); //重新组织文件内容到一个字符串,(按照原来分好的一行一行的)

$sql=str_replace(“r”,”,$read);//去掉”r(回车符)”

$detail=explode(“;n”,$sql);

//将经上述整理过的文件内容再次按一条完整的sql语句(以;和n分隔)导入到数组$detail,

//此时数组detail的每个元素对应一条完整的sql语句

$count=count($detail);

for($i=0;$i

{

$sql=str_replace(“r”,”,$detail[$i]);//去掉每行sql中的回车符

$sql=str_replace(“n”,”,$sql);//去掉换行符

$sql=trim($sql);//去掉前后空格

//现在的$sql

if($sql)

{

if(eregi(“create table”,$sql))//如果当前的sql语句是创建新表,则考虑版本兼容,以及重设字符集

{

//$mysqlv=mysql_get_server_info();

$sql=preg_replace(“/default charset=([a-z0-9]+)/is”,””,$sql);//去除原来的字符集设置信息

$sql=preg_replace(“/type=myisam/is”,”engine=myisam”,$sql);

if($dbcharset)

{

$sql=str_replace(“engine=myisam”,” engine=myisam default charset=$dbcharset “,$sql);

}

if(mysql_get_server_info()

{

$sql=preg_replace(“/engine=myisam/is”,”type=myisam”,$sql);//

}

}

mysql_query($sql);

}

}

}'4.1')

$count;$i++)

$c1;$j++)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值