前面小站有篇文章(php导出备份MySql数据库功能示例)提到过,网站后台里数据库的备份和还原(导出和导入)是一个非常重要的功能。小站在 MySQL数据库导入和导出的多种方法这篇文章里已经介绍过。还是那句话,这次我们用php来给自己写一个导出数据库sql文件的功能,因为有些时候,我们租用的廉价虚拟主机不一定提供phpmyadmin的权限,这个时候,只能靠自己了。下面开始上代码:
一般导入sql文件的功能都是先选择一个sql文件上传到服务端,这里省略文件上传的过程,假设文件已经上传到服务端。如果需要php文件上传功能示例教程的朋友稍等一会儿,小站以后很快更新,下面先上执行sql文件的代码:
header('Content-type:text/html; charset=utf-8');
// 配置数据库信息
$db_h = 'localhost';
$db_u = 'root';
$db_p = '';
$db_n = 'wenda'; // 数据库名称
$db_char = 'utf8';
$sql_file = 'test.sql'; // 需导入的sql文件路径(文件名)
$link = mysql_connect($db_h,$db_u,$db_p);
mysql_query('set names '.$db_char);
mysql_select_db($db_n);
$lines=file($sql_file); // 读取文件到数组$lines
echo '正在导入sql...
';
$sqlstr=""; // 声明sql语句字符串
// 处理数组$lines,去掉注释行,放入$sqlstr中
foreach($lines as $line){
$line=trim($line);
if($line!=""){
if((substr($line,0,1)!="#" && substr($line,0,2)!="--")){
$sqlstr.=$line;
}
}
}
$sqlstr=preg_replace("/\/\*.*\*\//is","",$sqlstr); //去掉 /**/注释
// 处理$sqlstr,用分号分成单句sql语句
$sqlstr=rtrim($sqlstr,";");
$sqls=explode(";",$sqlstr);
// 循环遍历执行$sqls里的sql语句
foreach($sqls as $sql){
if(mysql_query($sql)){
echo '执行成功!=>
'.substr($sql,0,50).'
';
}else{
echo '执行失败!=>
'.mysql_error().'
';
}
}
echo '导入完成!';
这样我们就能自己写一个sql文件导入还原的功能了。以上代码示例供大家学习用,实际使用的时候注意考虑安全问题。