Дела, дела, дела... Но как обещал, сегодня расскажу Вам, как создать собственный бекап бд.
Есть конечно простой способ, но он не будет работать на обычных хостингах.
#PHP
<?php
// автор: DEATH
$name = date("d.m.Y_H-i-s");
exec("mysqldump --user=имя_пользователя_бд --password=пароль --default-character-set=кодировка_данных имя_базы > dump_$name.sql");
Следющий код будет у Вас работать везде
#PHP
<?php
$user='test'; // имя юзера
$pass='test'; // пароль от юзера
$base='bakler'; // имя базы
$db=mysql_connect('localhost',$user,$pass); // соединяемся с mysql сервером
if(!$db or !mysql_select_db($base,$db)){exit('Нет соединения с БД!');} // устанавливаем соединение с базой
mysql_query('SET NAMES utf8'); // устанавливаем кодировку соеднения
$dump=$optimize=array(); // создаем массывы, в которые будем вносить дамп и имена таблиц для оптимизации(дефрагментации)
$res=mysql_list_tables($base); // получаем список таблиц
while($table=mysql_fetch_row($res)){ // выводим их в цикле
$optimize[]=$table[0]; // дописываем имя таблицы для ее оптимизации
$columns=mysql_fetch_row(mysql_query('SHOW CREATE TABLE `'.$table[0].'`')); // получаем структуру таблицы
$dump[]=$columns[1].";\r\n-- -------------------------------\r\n"; // заносим структуру в наш дамп
// Дальше будем вытаскивать сами записи таблицы
$resz=mysql_query('SELECT * FROM `'.$table[0].'`'); // вытаскиваем данные из таблицы
for($i=0;$m=mysql_fetch_assoc($resz);$i++, $name=array(), $value=array()){ // выводим их в цикле, + создаем 2 массива, в которые будем заносить имена столбцов и их содержание
foreach($m as $k=>$v){ // выводим список список столбцов
$name[]=$k; // заносим в массив списк имен столбцов
$value[]=mysql_real_escape_string($v); // заносим в массив список значений массива(их содержание)
}
$dump[]="INSERT INTO `".$table[0]."` (`".implode('`, `',$name)."`) VALUES ('".implode("', '",$value)."');\r\n\r\n"; // составляем дамп записей и записываем его в наш существующий дамп
}
$dump[]="\r\n-- -------------------------------\r\n\r\n\r\n\r\n"; // добавляем строчку для красоты
}
############
mysql_query('OPTIMIZE TABLE `'.implode('`, `',$optimize).'`'); // оптимизируем таблицы
$name=date('d.m.Y_H-i-s').'.sql'; // задаем имя для файла с дампом
$dump=implode('',$dump); // соединяем все элементы массива
file_put_contents($name,$dump); // записываем дамп в файл
Вот таким вот несложным образом можно делать бекапы своей бд. Лично у меня каждый дамп залился обратно абсолютной копией.
ЗЫ. используйте всегда кодировку utf-8:
при соединении с бд
в кодировке самой бд
в кодировке таблицы
в кодировке каждого столбца
utf8_general_ci - регистроНЕзависимая кодировка
utf8_unicode - регистрозависимая кодировка
При выполнении этих пунктов, у Вас никогда не возникнут проблемы с "корявостью" букв при переносе бд.