作者:霙昉蘖976 | 来源:互联网 | 2018-03-25 04:46
像这种php读取sql文件导入数据库情况,用得最多的就是数据库备份与还原来了,原理很简单按指定格式导入成.sql文件或利用phpmyadmin导出都可以用本程序来实现导入,代码如下:?p...
像这种php读取sql文件导入数据库情况,用得最多的就是数据库备份与还原来了,原理很简单按指定格式导入成.sql文件或利用phpmyadmin导出都可以用本程序来实现导入,代码如下:
'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); //取每行的前4个字符
if (ereg("#", $ck) || ereg("--", $ck)) //去掉注释
{
continue;
}
$arr[] = $file2[$j]; //将去掉注释的文件内容按行读入数组$arr,数组每个元素对应一行
}
$read = implode("n", $arr); //重新组织文件内容到一个字符串,(按照原来分好的一行一行的)
$sql = str_replace("r", &#39;&#39;, $read); //去掉"r(回车符)"
$detail = explode(";n", $sql);
//将经上述整理过的文件内容再次按一条完整的sql语句(以;和n分隔)导入到数组$detail,
//此时数组detail的每个元素对应一条完整的sql语句
$count = count($detail);
for ($i = 0; $i <$count; $i++) {
$sql = str_replace("r", &#39;&#39;, $detail[$i]); //去掉每行sql中的回车符
$sql = str_replace("n", &#39;&#39;, $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() <&#39;4.1&#39;) { //开源代码phprm.com
$sql = preg_replace("/engine=myisam/is", "type=myisam", $sql); //
}
}
mysql_query($sql);
}
}
}
永久地址:
转载随意~请带上教程地址吧^^