Criando um backup do Banco em PHP sem usar comandos de SO.

Aqui está um exemplo de código em PHP que cria um backup do banco de dados MySQL sem usar comandos do sistema operacional (como exec()) e permite que você baixe o arquivo de backup através de um link (<a href>) e exclua o arquivo antigo quando desejar:

<?php
$servername = "localhost";
$username = "seu_usuario";
$password = "sua_senha";
$database = "seu_banco_de_dados";

// Conectar ao banco de dados
$conn = new mysqli($servername, $username, $password, $database);

// Verificar a conexão
if ($conn->connect_error) {
    die("Falha na conexão: " . $conn->connect_error);
}

// Nome do arquivo de backup
$backupFile = 'backup_' . date('Ymd_His') . '.sql';

// Criar o arquivo de backup
$handle = fopen($backupFile, 'w');

// Obter a lista de tabelas do banco de dados
$tables = array();
$result = $conn->query("SHOW TABLES");
while ($row = $result->fetch_row()) {
    $tables[] = $row[0];
}

// Percorrer as tabelas e escrever os dados no arquivo de backup
foreach ($tables as $table) {
    $result = $conn->query("SELECT * FROM $table");
    
    fwrite($handle, "-- Tabela: $table\n");
    
    while ($row = $result->fetch_assoc()) {
        $row = array_map('addslashes', $row);
        $row = array_map('htmlspecialchars', $row);
        
        $sql = "INSERT INTO $table (`" . implode("`, `", array_keys($row)) . "`) VALUES ('" . implode("', '", $row) . "');";
        
        fwrite($handle, $sql . "\n");
    }
    
    fwrite($handle, "\n");
}

// Fechar o arquivo
fclose($handle);

// Download do arquivo de backup
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($backupFile));
header('Content-Length: ' . filesize($backupFile));
readfile($backupFile);

// Excluir o arquivo de backup do servidor
unlink($backupFile);

// Encerrar a conexão com o banco de dados
$conn->close();
?>

Neste exemplo, utilizamos a função fopen() para criar um arquivo de backup e a função fwrite() para escrever os dados de cada tabela do banco de dados no arquivo. Em seguida, usamos os cabeçalhos HTTP para permitir o download do arquivo de backup quando o link for clicado. Por fim, utilizamos a função unlink() para excluir o arquivo de backup do servidor.

Certifique-se de substituir 'seu_usuario', 'sua_senha' e 'seu_banco_de_dados' pelas suas próprias credenciais e nome do banco de dados.

Se o banco de dados MySQL estiver configurado corretamente com a codificação desejada (como UTF-8, Latin1, etc.), os dados serão retornados nessa codificação específica quando você os recuperar usando as funções do PHP.

Quando você se conecta ao banco de dados usando a função mysqli_connect() ou new mysqli(), você pode especificar a codificação que deseja usar. Por exemplo, você pode definir a codificação para UTF-8 da seguinte forma:

$conn = new mysqli($servername, $username, $password, $database);
$conn->set_charset("utf8");

Ao fazer isso, o MySQL retornará os dados no formato UTF-8, e o PHP cuidará da codificação correta dos caracteres ao processar esses dados.

É importante lembrar que a codificação não é aplicada automaticamente nos valores armazenados no banco de dados. Você precisa configurar corretamente a codificação ao criar as tabelas e ao inserir os dados no banco de dados para garantir que os caracteres sejam armazenados corretamente.

Certifique-se de configurar a codificação correta tanto na conexão com o banco de dados quanto nas configurações do próprio banco de dados para garantir que os dados sejam manipulados e exibidos corretamente em seu aplicativo.

Rolar para cima