<?php
// 變量參數設置
$options = array(php
'db_host' =>'localhost', 'db_user' =>'root', 'db_pwd' =>'', 'db_name' =>'test', 'db_charset'=>'utf8',
);
// 鏈接數據庫
$conn = mysql_connect($options['db_host'], $options['db_user'], $options['db_pwd']);
mysql_select_db('test', $conn);
mysql_query("SET NAMES {$options['db_charset']}", $conn);
// 獲取數據庫的全部表
$tableArr = array();
$resource = mysql_query('SHOW TABLES FROM test', $conn);
while ($tempArr = mysql_fetch_row($resource)) {mysql
$tableArr[] = $tempArr[0];
}
// 循環操做每一個表
foreach ($tableArr as $table) {sql
// (1)獲取建立表的 SQL 語句 $resource = mysql_query('SHOW CREATE TABLE '.$table, $conn); $tempArr = mysql_fetch_row($resource); $sqlStr = 'DROP TABLE IF EXISTS '.$table.";\n"; $sqlStr .= $tempArr[1].";\n"; // (2)獲取數據表中的字段信息 $fieldArr = array(); $resource = mysql_query('SHOW COLUMNS FROM '.$table); while ($tempArr = mysql_fetch_assoc($resource)) { if ($tempArr['Key'] == 'PRI') { $fieldArr['PRI'] = $tempArr['Field']; } else { $fieldArr[] = $tempArr['Field']; } } // (3)查詢每一個字段的內容, 拼成 SQL 字符串 $sql = 'SELECT * FROM '.$table; if (!empty($fieldArr['PRI'])) $sql .= ' ORDER BY '.$fieldArr['PRI'].' ASC'; $resource = mysql_query($sql); while ($tempArr = mysql_fetch_row($resource)) {//獲取每張表對應的 INSERT SQL 語句 $sqlStr .= 'INSERT INTO '.$table.' VALUES ('; foreach ($tempArr as $value) { $sqlStr .= '\''.addslashes($value).'\', ';//轉義特殊字符 } $sqlStr = substr($sqlStr, 0, -2).");\n"; } $sqlStr .= "\n\n-- =========================$table\n\n"; // (4)輸出內容到文件 $handle = fopen("db_bakup_{$options['db_name']}.sql", 'a+'); if (flock($handle, LOCK_EX)) { fwrite($handle, $sqlStr); flock($handle, LOCK_UN); } fclose($handle);
}
// 釋放Mysql資源, 關閉鏈接
mysql_free_result($resource);
mysql_close($conn);
?>數據庫