Автор Тема: Помощь в реализации  (Прочитано 521 раз)

0 Пользователей и 1 Гость просматривают эту тему.

wexlerАвтор темы

  • *
  • Оффлайн
  • Награды Более 4 лет на форуме !!! Более 10 созданных тем Более 50 сообщений
  • Дата регистрации: Июль 2017
  • Сообщений: 63
  • Страна: ru
  • Поблагодарили: 1 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
    • Награды
Помощь в реализации
« : 10 Июля 2017, 13:31:22 »
:preved:
Помогите пожалуйста реализовать следующее.
В php существует такая функция, как exec. Я хочу сделать так, что бы с админки можно было создавать бекап бд.
<?PHP
exec('mysqldump --Пользователь БД=... --Пароль БД=... --localhost=... DB_NAME > /file.sql');
?>
Пока что получилось только это. И то что получилось, это не работает. То есть, если запустить этот файл с адресной строки, то никакого бекапа не создается.
Что нужно еще добавить?
 

romcka8

  • *
  • Оффлайн
  • Награды Более 5 лет на форуме !!! Топ 10 по сообщениям Более 500 сообщений Более 10 созданных тем
  • Дата регистрации: Фев. 2016
  • Сообщений: 643
  • Страна: 00
  • Поблагодарили: 22 раз(а)
  • Репутация +2/-0
  • Пол: Мужской
    • Награды
 

wexlerАвтор темы

  • *
  • Оффлайн
  • Награды Более 4 лет на форуме !!! Более 10 созданных тем Более 50 сообщений
  • Дата регистрации: Июль 2017
  • Сообщений: 63
  • Страна: ru
  • Поблагодарили: 1 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
    • Награды
Помощь в реализации
« Ответ #2 : 10 Июля 2017, 13:49:58 »
Оу.
Даже так. Спасибо )

Добавлено сообщение: 10 Июля 2017, 14:17:57
Теперь пара вопросов.
<?PHP
backup_database_tables('localhost','user','pass','bd', '*');

// backup the db function
function backup_database_tables($host,$user,$pass,$name,$tables)
{

$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);

//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}

//cycle through each table and format the data
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);

$return.= 'DROP TABLE '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "nn".$row2[1].";nn";

for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = preg_replace("n","\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");n";
}
}
$return.="nnn";
}

//save the file
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}

?>
Где нужно прописать папку, что бы туда записывался этот файл?
И по поводу кода. Файл сохраняется, с таблицами, но не с их значениями, как исправить?
ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8;nnINSERT INTO ot_sup VALUES("","","","","");nINSERT INTO ot_sup VALUES("","","","","");nINSERT INTO ot_sup VALUES("","","","","");nINSERT INTO ot_sup VALUES("","","","","");nINSERT INTO ot_sup VALUES("","","","","");nINSERT INTO ot_sup VALUES("","","","","");nINSERT INTO ot_sup VALUES("","","","","");nnnnDROP TABLE support;nnCREATE TABLE `support` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(50) NOT NULL,
  `title` varchar(50) NOT NULL,
  `text` text NOT NULL,
  `date` varchar(50) NOT NULL,
  `status` int(10) NOT NULL,
  PRIMARY KEY (`id`)
 

APTEMOH

  • *
  • *
  • Оффлайн
  • Награды Более 5 лет на форуме !!! Топ 10 по сообщениям За помощь пользователям Репутация более 15 Более 500 сообщений Более 10 созданных тем
  • Дата регистрации: Сен. 2015
  • Расположение: Расположение
  • Сообщений: 526
  • Страна: th
  • Поблагодарили: 64 раз(а)
  • Репутация +19/-2
  • Пол: Мужской
    • Награды
  • Социальные сети:
    ВКонтакте
Помощь в реализации
« Ответ #3 : 10 Июля 2017, 18:18:48 »
Где нужно прописать папку, что бы туда записывался этот файл?

//save the file
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');

Файл пишется в корень.
Теги: