23.10.2017 04:43:36 pm
Автор кода неизвестен. Я немного исправил функцию, "подружил" ее с PHP 7, исправил ошибки и удалил лишний, на мой взгляд код:
Вызывается функция так же:
function backup_database_tables($host, $user, $pass, $name, $tables)
{
$link = new mysqli($host, $user, $pass, $name);
$link->set_charset('utf8');
if ($tables == '*')
{
$tables = array();
$result = $link->query('SHOW TABLES');
while($row = $result->fetch_row())
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',', $tables);
}
$return = null;
foreach ($tables as $table)
{
$table = trim($table);
$result = $link->query('SELECT * FROM ' . $table);
$num_fields = $result->field_count;
$query = $link->query('SHOW CREATE TABLE ' . $table);
$row2 = $query->fetch_row();
$return .= $row2[1] . ";\n\n";
for ($i = 0; $i < $num_fields; $i++)
{
while($row = $result->fetch_row())
{
$return .= 'INSERT INTO `' . $table . '` VALUES(';
for($j = 0; $j < $num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
if (isset($row[$j]))
{
$return.= '\'' . $row[$j] . '\'' ;
}
else
{
$return.= '\'\'';
}
if ($j < ($num_fields - 1))
{
$return .= ', ';
}
}
$return .= ');' . "\n";
}
}
$return .= "\n";
}
$handle = fopen('db-backup-' . time() . '.sql', 'w+');
fwrite($handle, $return);
fclose($handle);
}
Вызывается функция так же:
backup_database_tables('HOST', 'USERNAME', 'PASSWORD', 'DATABASE', '*');
- Жалоба