
17.03.2009, 17:32
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 335
С нами:
9963746
Репутация:
392
|
|
скрипт бекапа БД, при переходе на него, предлагает скачать файл с дампом, если кодировка соединения и БД не совпадает раскомментируйте 18-19 строку и укажите кодировку базы
PHP код:
<?php
/**
* @author Zedi
* @copyright 2009
*/
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'chat';
$connect = mysql_connect($dbhost, $dbuser, $dbpass) or die("Не могу соединиться с MySQL сервером!<br>" .
mysql_error());
$db = mysql_select_db($dbname) or die("Базы данных не существует!<br>" .
mysql_error());
#$sql = "SET NAMES utf8";
#$result = mysql_query($sql, $connect);
$filename = "dump_" . date('Y-m-d_H-i-s_') . rand(0, 100) . $dbname . ".sql";
$ext = "sql";
$mime_type = "'application/octet-stream";
$now = gmdate('D, d M Y H:i:s') . ' GMT';
header('Content-Type: ' . $mime_type);
header('Expires: ' . $now);
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
$sql = 'SHOW TABLE STATUS FROM `' . $dbname . "`";
$query = mysql_query($sql, $connect);
$n = mysql_num_rows($query);
$total_size = 0;
$dump = '';
for ($i = 0; $i < $n; $i++)
{
$array_tables = mysql_fetch_array($query);
$tname = $array_tables[0];
$sql_table = "SHOW CREATE TABLE `{$tname}`";
$query_table = mysql_query($sql_table, $connect);
$table = mysql_fetch_array($query_table);
$sql_data = "SELECT * FROM `{$tname}`";
$result = mysql_query($sql_data, $connect);
$c_data = mysql_num_rows($result);
$dump .= $table[1] . ";\n";
if ($c_data)
$dump .= "INSERT INTO `{$tname}` VALUES";
$sql_columns = "SHOW COLUMNS FROM `{$tname}`";
$query_columns = mysql_query($sql_columns, $connect);
$c = mysql_num_rows($query_columns);
$fields = array();
for ($k = 0; $k < $c; $k++)
{
$column = mysql_result($query_columns, $k, 0);
$push = array_push($fields, $column);
}
$p = 0;
for ($g = 0; $g < $c_data; $g++)
{
$z = 0;
$zp = $zk = '';
if ($p)
$zk = ', ';
$dump .= $zk . " \n(";
foreach ($fields as $fild)
{
if ($z)
$zp = ', ';
$dump .= $zp . '\'' . addslashes(mysql_result($result, $g, $fild)) . '\'';
$z++;
}
$dump .= ")";
$p++;
}
if ($c_data)
$dump .= "; \n";
else
$dump .= "\n";
}
echo $dump;
die();
?>
Последний раз редактировалось Zedi; 17.03.2009 в 17:39..
|
|
|