O PHP é amplamente usado para criar uma ampla variedade de produtos, desde aplicativos da Web até aplicativos de nível empresarial. A chave para um código PHP eficiente é seguir fluxos de trabalho adequados e automatizar processos. O resultado é um código de alta qualidade e livre de bugs.
Em quase todos os aplicativos PHP, os dados são armazenados, acessados e trocados entre vários componentes do aplicativo. Para garantir que essa troca e acesso aos dados ocorra sem problemas e sem problemas, a equipe de desenvolvimento deve garantir que os bancos de dados e os dumps de dados estejam no formato adequado.
Importar e exportar dados de e para bancos de dados é um procedimento bastante comum no desenvolvimento PHP. Outra atividade importante é o backup e transferência de bancos de dados.
Neste artigo, explicarei como salvar tabelas de arquivos CSV no MySQL e vice-versa. Você precisa se inscrever no Cloudways para iniciar um servidor e um aplicativo PHPstack. Antes de se inscrever, olhar para todas as opções de preços dos provedores de hospedagem de classe mundial como AWS, DigitalOcean, Linode, Vultr e GCP é uma boa ideia para que você possa encontrar aquele que se adapta perfeitamente às suas necessidades.
Hospedagem PHP:Melhor Hospedagem na Web PHP 7 e PHP 5.6
Criar um banco de dados no MySQL
A primeira etapa neste tutorial é a criação de um banco de dados MySQL. Como o Cloudways fornece o gerenciador mysql personalizado na plataforma que contém um banco de dados para app. você pode criar tabelas executando consultas SQL. Crie uma tabela `employeeinfo` no banco de dados usando a seguinte consulta SQL.
CREATE TABLE employeeinfo( emp_id VARCHAR(50) UNSIGNED PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date VARCHAR(50) )
Isso criará uma nova tabela `employeeinfo` no banco de dados. Vou usar esta tabela para inserir dados do arquivo CSV.
Pare de perder tempo com servidores
A Cloudways cuida do gerenciamento de servidores para você, para que você possa se concentrar na criação de ótimos aplicativos e manter seus clientes satisfeitos.
Comece grátis
Criar conexão MySQL em PHP
Para importar e exportar banco de dados no MySql, será criado um arquivo separado `config.php`. Adicione o código a seguir e substitua as credenciais do banco de dados pelas suas. Você pode encontrar suas credenciais de banco de dados em detalhes de acesso ao aplicativo:
<?php function getdb(){ $servername = "localhost"; $username = "huscqxzwaw"; $password = "2WWKxxxxHr"; $db = "huscqxzwaw"; try { $conn = mysqli_connect($servername, $username, $password, $db); //echo "Connected successfully"; } catch(exception $e) { echo "Connection failed: " . $e->getMessage(); } return $conn; } ?>
Relacionado: Como conectar o banco de dados MySQL com sites PHP
Importar CSV para MySQL em PHP
Após a criação do banco de dados, preciso de um arquivo HTML que possa fazer upload do arquivo CSV. Para este arquivo HTML, usarei o uploader de arquivo HTML em um formulário de inicialização simples.
Crie um arquivo e nomeie-o como `index.php` . Este é um formulário simples para fazer upload de arquivo CSV. Este arquivo também mostrará os resultados em uma tabela simples na mesma página. Quando o usuário enviar o formulário, todos os registros serão salvos no banco de dados.
Primeiro, adicionarei Bootstrap CDN ao index.php .
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" crossorigin="anonymous"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" crossorigin="anonymous"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" crossorigin="anonymous"></script>
Em seguida, no `corpo` adicione o seguinte código HTML para o formulário Bootstrap.
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" crossorigin="anonymous"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" crossorigin="anonymous"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" crossorigin="anonymous"></script> </head> <body> <div id="wrap"> <div class="container"> <div class="row"> <form class="form-horizontal" action="functions.php" method="post" name="upload_excel" enctype="multipart/form-data"> <fieldset> <!-- Form Name --> <legend>Form Name</legend> <!-- File Button --> <div class="form-group"> <label class="col-md-4 control-label" for="filebutton">Select File</label> <div class="col-md-4"> <input type="file" name="file" id="file" class="input-large"> </div> </div> <!-- Button --> <div class="form-group"> <label class="col-md-4 control-label" for="singlebutton">Import data</label> <div class="col-md-4"> <button type="submit" id="submit" name="Import" class="btn btn-primary button-loading" data-loading-text="Loading...">Import</button> </div> </div> </fieldset> </form> </div> <?php get_all_records(); ?> </div> </div> </body> </html>
Você pode notar que eu configurei uma ação para `functions.php` Arquivo. Na próxima etapa, criarei esse arquivo e adicionarei código a ele. Eu também incluí um método `get_all_records()` perto do final do arquivo. Este método busca todos os registros do banco de dados e exibe os registros na tabela na página de índice.
Em seguida, criarei `functions.php` arquivo e adicione o seguinte código nele.
<?php if(isset($_POST["Import"])){ $filename=$_FILES["file"]["tmp_name"]; if($_FILES["file"]["size"] > 0) { $file = fopen($filename, "r"); while (($getData = fgetcsv($file, 10000, ",")) !== FALSE) { $sql = "INSERT into employeeinfo (emp_id,firstname,lastname,email,reg_date) values ('".$getData[0]."','".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."')"; $result = mysqli_query($con, $sql); if(!isset($result)) { echo "<script type=\"text/javascript\"> alert(\"Invalid File:Please Upload CSV File.\"); window.location = \"index.php\" </script>"; } else { echo "<script type=\"text/javascript\"> alert(\"CSV File has been successfully Imported.\"); window.location = \"index.php\" </script>"; } } fclose($file); } } ?>
Quando o carregar botão for clicado, o nome do arquivo temporário será armazenado na memória e usando o botão `enquanto` loop os dados são salvos em $getData variável. Uma vez que o processo tenha sido concluído, os dados são classificados em colunas e, finalmente, inseridos no `employeeinfo` tabela.
Observe que `fgetcsv()` analisa as linhas do arquivo aberto, verificando os campos CSV e `fopen()` abre um arquivo ou um URL. Esse código pode ser testado importando um arquivo CSV com dados de teste.
Exibir os registros salvos
Depois que o arquivo CSV for importado, exibirei os dados por meio de uma função simples, `get_all_records()`, inicializado em `index.php`. Copie esta função para `function.php` .
function get_all_records(){ $con = getdb(); $Sql = "SELECT * FROM employeeinfo"; $result = mysqli_query($con, $Sql); if (mysqli_num_rows($result) > 0) { echo "<div class='table-responsive'><table id='myTable' class='table table-striped table-bordered'> <thead><tr><th>EMP ID</th> <th>First Name</th> <th>Last Name</th> <th>Email</th> <th>Registration Date</th> </tr></thead><tbody>"; while($row = mysqli_fetch_assoc($result)) { echo "<tr><td>" . $row['emp_id']."</td> <td>" . $row['firstname']."</td> <td>" . $row['lastname']."</td> <td>" . $row['email']."</td> <td>" . $row['reg_date']."</td></tr>"; } echo "</tbody></table></div>"; } else { echo "you have no records"; } }
Nesse método realmente simples, eu simplesmente selecionei todos os registros e exibi esses registros na página de índice por meio do método. Sempre que o usuário fizer upload de um arquivo CSV, os registros serão salvos na tabela e exibidos na página de índice.
Exportar MySQL para CSV com PHP
Exportar dados do banco de dados MySQL para um arquivo CSV também é muito fácil. Para demonstrar isso, usarei o index.php que criei anteriormente.
Adicione o seguinte código ao arquivo.
<div> <form class="form-horizontal" action="functions.php" method="post" name="upload_excel" enctype="multipart/form-data"> <div class="form-group"> <div class="col-md-4 col-md-offset-4"> <input type="submit" name="Export" class="btn btn-success" value="export to excel"/> </div> </div> </form> </div>
Depois de adicionar essa marcação HTML, o Exportar botão aparecerá abaixo da tabela. Agora adicione a seguinte condição em functions.php.
if(isset($_POST["Export"])){ header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=data.csv'); $output = fopen("php://output", "w"); fputcsv($output, array('ID', 'First Name', 'Last Name', 'Email', 'Joining Date')); $query = "SELECT * from employeeinfo ORDER BY emp_id DESC"; $result = mysqli_query($con, $query); while($row = mysqli_fetch_assoc($result)) { fputcsv($output, $row); } fclose($output); }
Quando o `Exportar` botão for clicado, os cabeçalhos `Content-Type:text/csv` com um anexo `data.csv` é enviado.
Desde `php://output` é um fluxo somente gravação que permite acesso de gravação ao mecanismo de buffer de saída, selecionei todos os dados da tabela na próxima linha e passei para `fputcsv()` método. Este método formata uma linha (passada como uma matriz de campos) como CSV e a grava (terminada por uma nova linha) no arquivo especificado. Finalmente, o arquivo com todos os dados desejados é baixado.
Por fim, após integrar todo o código, você verá a seguinte forma final de aplicação.
Você também pode gostar de: CRUD simples em PHP e MySQL
Conclusão
Neste artigo, discuti como você pode exportar dados de e para arquivos CSV usando PHP e MySQL. Este é um exemplo simples que você pode adicionar lógica e validações mais complexas de acordo com seus requisitos. Você também pode criar casos de teste para verificar o código e integrar com o GitHub usando as ferramentas de integração contínua do PHP. Se você deseja adicionar à discussão ou gostaria de fazer uma pergunta, deixe um comentário abaixo.
perguntas frequentes
Como importo e exporto CSV usando php e MySQL?
- Aprove o registro enviado, seja um arquivo CSV substancial.
- Inspecione o status da transferência do arquivo CSV usando a função is_uploaded_file() do PHP.
- Acesse o arquivo CSV utilizando a função PHP fopen().
- Analisar dados do registro CSV utilizando a função PHP fgetcsv().
- Inserir ou atualizar dados no banco de dados com base no e-mail do membro.