4

Conexão com banco de dados para iniciantes (PDO)

#PHP #MySQL
Alessandro Araújo
Alessandro Araújo

Introdução

Durante seus estudos sobre programação, os desenvolvedores podem obter certa quantidade de dados a partir de suas aplicações.


Perante a essa situação, surge um obstáculo: Como armazenar as informações obtidas em um banco de dados? Seria necessário ir até o banco e adicionar manualmente?


A resposta é não!


Veremos, a seguir, como se conectar a um banco de dados com PDO, além de observar um pequeno exemplo de inserção de dados em um banco de dados criado na própria máquina.


O que é PDO?

O PHP Data Object (Objeto de dados PHP) é uma extensão da linguagem PHP que possibilita a conexão com bancos de dados e a manipulação deles de forma fácil e eficiente.


Dentre as principais vantagens de se utilizar PDO, destacam-se a grande variedade de recursos disponíveis e o suporte a diversos tipos de bancos de dados.


Como realizar a conexão utilizando PDO?

Sendo PDO uma classe, devemos criar uma instância dela para poder utilizá-la corretamente. Para fazer isso, devemos utilizar o operador new.


Primeiramente, devemos escolher uma variável para "armazenar" essa instância. Para facilitar, podemos criar uma variável chamada connection.


$connection = new PDO();


Porém não podemos nos conectar sem passar alguns parâmetros durante essa declaração, cujos valores são:


1) DSN - Consiste no nome do "tipo" de banco de dados (mySQL, por exemplo), seguida da "URI que define a localização de um arquivo contendo a string DSN" (como diz a documentação oficial), que pode ser "localhost" no caso de um servidor criado na sua própria máquina (e também dos servidores de algumas empresas de hospedagem de sites). Além disso, é necessário informar o nome do banco de dados.


2) Nome de usuário do banco de dados (se estiver utilizando o XAMPP para criar um servidor, por padrão, o usuário é root. Se não, tente consultar a empresa de hospedagem onde seu site/aplicação está hospedada).


3) Senha do banco de dados.


No caso da utilização do XAMPP, a declaração deveria ser feita, por padrão, desta forma:


$connection = new PDO("mysql:localhost;dbname=nomedobanco", "root", "");


Exemplo de inserção de dados

Em primeiro lugar, devemos escolher o comando SQL que queremos executar. Suponha que desejamos inserir valores em uma tabela chamada "dados", com os campos "id" e "dado1".


Armazenaremos nosso comando em uma variável:

$sql = "insert into dados(id, dado1) values (?, ?)";


Não devemos colocar os dados a serem inseridos diretamente dentro dos parênteses do values. Por segurança, devemos nos prevenir utilizando o método prepare da classe PDO (cuja instância armazenamos na variável connection).


Armazenaremos o resultado do método em outra variável:

$prepare = $connection->prepare($sql);


Continuando pelo processo mais seguro, informaremos os valores de inserção da seguinte forma (suponha que tenhamos recebido os valores pelo método POST):


$prepare->bindParam(1, $_POST["id"]);
$prepare->bindParam(2, $_POST["dado1"]);


(Os valores devem ser informados exatamente na ordem dos campos anteriormente indicados - id e dado1 - adaptando, é claro, para a situação que desejarmos).


Por último, só precisamos executar o comando com:

$prepare->execute();


Todo esse processo nos ajuda a combater possíveis invasões, como por meio de SQL injection, por exemplo.


Caso desejar, você pode obter o número de linhas afetadas com esse método:

$prepare->rowCount();


Cujo resultado pode ser armazenado em uma variável.


Finalizando...

Você também pode conferir a documentação oficial da classe PDO através do seguinte link.


Obrigado por ler este artigo!

Se souber de mais informações úteis, você pode compartilhar conosco por meio dos comentários.


Caso queira entrar em contato, deixo alguns links abaixo para este fim:

Linkedin

Twitter

3
72

Comentários (8)

1
Marcos Imperatori

Marcos Imperatori

08/05/2021 12:51

Alessandro, parabéns! Explicação cara e objetiva. Gostaria apenas de comentar que uma boa prática aliada a utilização PDO seria implementar o padrão singleton e com isso a própria classe conexão seria a responsável por fazer a conexão, isso num método privado, e possuir um método estático que apenas retornaria uma instância dessa classe, no caso uma conexão.

0
Alessandro Araújo

Alessandro Araújo

08/05/2021 12:04

Olá Aevilés Silva!


No caso, o usuário e senha do banco não serão digitados através de um input (o que possibilitaria SQL Injection, se não construído de forma segura), mas através de um arquivo PHP, cujo código não será enviado para o lado do cliente, impedindo que ele tenha acesso a esses dados.


Além disso, já nos defendemos de maneira básica dos ataques através dos métodos de preparação do comando SQL.


Toda a conexão com o banco é feita através de arquivos PHP, utilizados apenas no lado do servidor.

1
Aevilés Silva

Aevilés Silva

08/05/2021 00:41

Muito bom o artigo 👏🏻👏🏻👏🏻👏🏻

Mas tenho uma dúvida, é seguro incluir a senha e o usuário, já que podemos ter ataques SQL injection por terceiros.

1
Maxwell Barboza

Maxwell Barboza

05/05/2021 10:50

Top o artigo. Parabéns!

1
M

Mizael Azevedo

02/05/2021 19:44

Parabéns!

0
Alessandro Araújo

Alessandro Araújo

01/05/2021 20:34

Obrigado pela interação, pessoal (0 - 0)

1
Alex Silva

Alex Silva

01/05/2021 20:13

Parabéns pelo artigo. Direto ao assunto e sem rodeios.

1
W

Wildson Ribeiro

01/05/2021 19:25

Muito bom,obrigado!


Sou um jovem em busca de conhecimento.

Brasil