通过phpMyAdmin导出的sql文件怎么通过php又导进去呢? 可以参考phpMyAdmin根目录下的import.php文件。个人认为还是很复杂的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是要好多正则替换什么的,我看了discuz的,不是那个东西导出的 以下代码来自PHP168,呵呵,不要告我侵权啊,部分注释是我加的,楼主稍微修改下就好了/** * 函数:将从PHPMyAdmin导出的sql文件导入到数据库,并兼容了版本问题,以及可以重新设置字符集 * * @param string $file:sql文件名 */function into_sql($file){ global $dbhost,$dbuser,$dbpw,$dbname,$db168,$dbcharset;//$db168:用户设定的数据表前缀,$dbcharset:? mysql_connect($dbhost,$dbuser,$dbpw); mysql_select_db($dbname); if( mysql_get_server_info() < '4.1' ) //返回 link_identifier 所使用的服务器版本。如果省略 link_identifier,则使用上一个打开的连接。 { $dbcharset='';//设置字符集,如果mysql版本低于4.1,则不设置字符集信息 } $dbcharset && mysql_query("SET NAMES '$dbcharset'");//?待考证 if( mysql_get_server_info() > '5.0' ) { mysql_query("SET sql_mode=''"); } $file2=readover($file); $file2=str_replace("p8_","$db168",$file2);//将文件中数据库表前缀换成用户设定的前缀$db168 if($dbcharset) { //$file2=str_replace("TYPE=MyISAM"," ENGINE=MyISAM DEFAULT CHARSET=$dbcharset ",$file2); } $file2=explode("\n",$file2);//将文件内容按行读入到数组 $c1=count($file2); for($j=0;$j<$c1;$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<$count;$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()<'4.1') { $sql=preg_replace("/ENGINE=MyISAM/is","TYPE=MyISAM",$sql);// } } mysql_query($sql); } }} 好东西啊,,换一下readover函数就ok了!谢~\(≧▽≦)/~啦啦啦! PHP 将二维数组转成一维数组 键名保持不变 并且去掉空元素 显示消息中有URL,怎么才能让这个URL可以被点击 上传图片的问题 phpMyAdmin中的数据不按主键排列了,怎么回事? 配置php+apache2.2 时出错了 求大神 找人帮忙构造一条SQL语句(mysql数据库) 请教各位大虾:php怎样做下载阿? ASP JSP 有什么区别 凡~ 有个问题请教 php在win2000系统下copy文件的问题。 jquery 提交 xml ,php如何取 curl post 跳转问题
* 函数:将从PHPMyAdmin导出的sql文件导入到数据库,并兼容了版本问题,以及可以重新设置字符集
*
* @param string $file:sql文件名
*/
function into_sql($file)
{
global $dbhost,$dbuser,$dbpw,$dbname,$db168,$dbcharset;//$db168:用户设定的数据表前缀,$dbcharset:?
mysql_connect($dbhost,$dbuser,$dbpw);
mysql_select_db($dbname);
if( mysql_get_server_info() < '4.1' )
//返回 link_identifier 所使用的服务器版本。如果省略 link_identifier,则使用上一个打开的连接。
{
$dbcharset='';//设置字符集,如果mysql版本低于4.1,则不设置字符集信息
}
$dbcharset && mysql_query("SET NAMES '$dbcharset'");//?待考证
if( mysql_get_server_info() > '5.0' )
{
mysql_query("SET sql_mode=''");
}
$file2=readover($file);
$file2=str_replace("p8_","$db168",$file2);//将文件中数据库表前缀换成用户设定的前缀$db168
if($dbcharset)
{
//$file2=str_replace("TYPE=MyISAM"," ENGINE=MyISAM DEFAULT CHARSET=$dbcharset ",$file2);
}
$file2=explode("\n",$file2);//将文件内容按行读入到数组
$c1=count($file2);
for($j=0;$j<$c1;$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<$count;$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()<'4.1')
{
$sql=preg_replace("/ENGINE=MyISAM/is","TYPE=MyISAM",$sql);//
}
}
mysql_query($sql);
}
}
}
好东西啊,,
换一下readover函数就ok了!谢~\(≧▽≦)/~啦啦啦!