像这种php读取sql文件导入数据库情况,用得最多的就是数据库备份与还原来了,原理很简单按指定格式导入成.sql文件或利用phpmyadmin导出都可以用本程序来实现导入,代码如下:
- 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' )
-
- {
- $dbcharset='';
- }
- if(emptyempty($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<$c1;$j++)
- {
- $ck=substr($file2[$j],0,4);
- if( ereg("#",$ck)||ereg("--",$ck) )
- {
- continue;
- }
- $arr[]=$file2[$j];
- }
- $read=implode("n",$arr);
- $sql=str_replace("r",'',$read);
- $detail=explode(";n",$sql);
-
-
- $count=count($detail);
- for($i=0;$i<$count;$i++)
- {
- $sql=str_replace("r",'',$detail[$i]);
- $sql=str_replace("n",'',$sql);
- $sql=trim($sql);
-
- if($sql)
- {
- if(eregi("create table",$sql))
- {
-
- $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()<'4.1')
- {
- $sql=preg_replace("/engine=myisam/is","type=myisam",$sql);
- }
- }
- mysql_query($sql);
- }
- }
- }
|