求段php导出mysql备份数据的代码
希望只运行程序,就导出sql格式的备份
类似 insert into tablename(x,y,z)values(1,2,3) 的那种sql语句格式的
用phpmyadmin步骤太多,看它的代码,没找到到底是如何方式的
问题点数:20、回复次数:2Top
1 楼iasky(iasky)回复于 2006-06-04 15:30:41 得分 20
function sqldumptable($table, $fp=0) {
global $DB;
$tabledump = "DROP TABLE IF EXISTS $table;\n";
$tabledump .= "CREATE TABLE $table (\n";
$firstfield=1;
$fields = $DB->query("SHOW FIELDS FROM $table");
while ($field = $DB->fetch_array($fields)) {
if (!$firstfield) {
$tabledump .= ",\n";
} else {
$firstfield=0;
}
$tabledump .= " $field[Field] $field[Type]";
if (!empty($field["Default"])) {
$tabledump .= " DEFAULT '$field[Default]'";
}
if ($field['Null'] != "YES") {
$tabledump .= " NOT NULL";
}
if ($field['Extra'] != "") {
$tabledump .= " $field[Extra]";
}
}
$DB->free_result($fields);
$keys = $DB->query("SHOW KEYS FROM $table");
while ($key = $DB->fetch_array($keys)) {
$kname=$key['Key_name'];
if ($kname != "PRIMARY" and $key['Non_unique'] == 0) {
$kname="UNIQUE|$kname";
}
if(!is_array($index[$kname])) {
$index[$kname] = array();
}
$index[$kname][] = $key['Column_name'];
}
$DB->free_result($keys);
while(list($kname, $columns) = @each($index)){
$tabledump .= ",\n";
$colnames=implode($columns,",");
if ($kname == "PRIMARY") {
$tabledump .= " PRIMARY KEY ($colnames)";
} else {
if (substr($kname,0,6) == "UNIQUE") {
$kname=substr($kname,7);
}
$tabledump .= " KEY $kname ($colnames)";
}
}
$tabledump .= "\n);\n\n";
if ($fp) {
fwrite($fp,$tabledump);
} else {
echo $tabledump;
}
$rows = $DB->query("SELECT * FROM $table");
$numfields = mysql_num_fields($rows);
while ($row = $DB->fetch_array($rows)) {
$tabledump = "INSERT INTO $table VALUES(";
$fieldcounter=-1;
$firstfield=1;
while (++$fieldcounter<$numfields) {
if (!$firstfield) {
$tabledump.=", ";
} else {
$firstfield=0;
}
if (!isset($row[$fieldcounter])) {
$tabledump .= "NULL";
} else {
$tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
}
}
$tabledump .= ");\n";
if ($fp) {
fwrite($fp,$tabledump);
} else {
echo $tabledump;
}
}
$DB->free_result($rows);
}Top
2 楼love01px(JAVA CUP)回复于 2006-06-04 18:08:19 得分 0
http://www.leexuan.com/upload/mydb.rar
小巧的Mysql备份脚本 3个文件
1. mydb.php //DB类
2. backup.php //备份脚本
3. restore.php //还原脚本
(From:OK.绷)
只要配置一下
backup.php和restore.php
的第3~7行
Top




