Из такой ситуации можно выкрутится следующим кодом:
<?php
/*mysql_connect, mysql_select_db..Подключились к бд*/
function dump_sql($dump_dir)
{
$tables = "SHOW TABLES"; // Получаем список таблиц
$res = mysql_query($tables) or die( "Ошибка при выполнении запроса: ".mysql_error() );
while( $table = mysql_fetch_row($res) )
{
$fp = fopen( $dump_dir."/".$table[0].".sql", "a" ); // Sql файл таблицы (таблица.sql)
if ( $fp )
{
$query = "TRUNCATE TABLE `".$table[0]."`;\n"; // Чистим таблицу (будет в дампе)
$un=false;
fwrite ($fp, $query);
$rows = 'SELECT * FROM `'.$table[0].'`'; // Получаем данные из таблицы
$r = mysql_query($rows) or die("Ошибка при выполнении запроса: ".mysql_error());
while( $row = mysql_fetch_row($r) )
{
$query = "";
foreach ( $row as $field )
{
if ( is_null($field) )
$field = "NULL";
else
$field = "'".mysql_escape_string( $field )."'";
if ( $query == "" )
$query = $field;
else
$query = $query.', '.$field;
}
$query = "INSERT INTO `".$table[0]."` VALUES (".$query.");\n"; // Вставка данных (будет в дампе)
$un=true;
fwrite ($fp, $query);
}
fclose ($fp);
if (!$un)
unlink($dump_dir."/".$table[0].".sql");
}
}
}
# Вызываем функцию указав папку в которую сохранять дампы
dump_sql('./sql_dumps');
?>
Недостатки метода:
1. Отсутствует create table
2. Избытычность insert into запросов
Преимущества:
1. Работает везде где есть php
2. Не требует знаний shell
п.с.: оба недостатка исправляются прямыми руками кодера =)