Conexões modernas e seguras para bancos de dados com PHP

Índice
Se há algo que pode danificar um aplicativo, é quando não usamos os recursos adequados para torná-lo mais rápido e seguro, existem muitas maneiras de melhorar a velocidade e segurança dos aplicativos, pode ser usando melhores padrões de desenvolvimento, aplicando maior segurança nos servidores, etc.
Porém, chega um ponto em que muitas vezes não paramos para pensar e é se a ferramenta que a linguagem nos dá é a melhor para o trabalho que estamos fazendo. Isso acontece muito em PHP Apesar de há muitos anos existir um alerta para não utilizar a função mysql_connect () para estabelecer links para Bases de dados, muitos desenvolvedores parecem não perceber o grande erro que cometem ao usá-lo.
PHP tem suporte nativo para um grande número de motores Bases de dados que existem no mercado, porém sua integração com MySQL é quase um ponto de partida obrigatório para a maioria dos usuários.
mysql_connect ()Da versão 5.5 do PHP função clássica mysql_connect () está no estado descontinuada, ou seja, está obsoleto e é altamente recomendável não usá-lo, pois não será incluído em versões futuras do idioma.
A alternativa para fazer a conexão passa por dois elementos, o primeiro é usar a mesma estrutura de linguagem para fazer as conexões ou usar a nova biblioteca para se conectar MySQL. Aqui pode vir a primeira pergunta, por que apenas pensar sobre MySQL? Bem, a resposta é simples, é um começo, é a coisa mais simples e útil que podemos explicar inicialmente, se conhecermos essa base podemos extrapolar para outros motores e drivers.
A primeira alternativa de conexão com Base de dados é usar o próprio objeto de dados da linguagem chamado Objeto de dados PHP ou sua abreviatura PDO. Isso nada mais é do que uma grande extensão escrita na linguagem C que nos permite estabelecer conexões com diferentes tipos de motores Bases de dados e que possui métodos padrão que nos dão a possibilidade de escrever aplicativos multiplataforma, ou seja, não precisamos mudar a sintaxe se mudarmos o mecanismo de banco de dados.
No início, dissemos que nos concentraríamos em MySQL, no entanto, se estabelecermos uma conexão por meio de PDO o que fazemos, podemos aplicar a outros motores. Para isso, basta ativar ou incorporar os drivers para os referidos motores e ativá-los no arquivo php.ini do servidor.
Para se conectar a um Base de dados só temos que estabelecer o link usando o método apropriado para ele, em PDO a conexão é feita com três parâmetros básicos, o nome do servidor de banco de dados, o nome de usuário e sua senha.
O único parâmetro desses três que precisa de explicação é o do servidor de banco de dados, no passado tínhamos que selecionar o Base de dados Através de uma função específica após estabelecer a conexão, neste caso faremos isso na mesma string, de forma que a string do nome do nosso servidor ficaria assim:
mysql: host = hostname; dbname = dbname

Vemos que inicialmente especificamos o motor, neste caso mysql então com o host vamos dizer qual é o servidor, aqui pode ser um IP ou localhost se o servidor for local, finalmente com dbname passamos o nome do banco de dados ao qual queremos nos conectar. Vamos observar na imagem a seguir como um código deve se conectar usando PDO:

PROLONGAR

Como sabemos o passo inicial que é como conectar, agora devemos aprender como podemos executar consultas, normalmente no passado costumávamos executar diretamente a consulta com seus parâmetros, esta prática não é segura, pois nos torna propensos a ataques do tipo Injeção SQL, PDO nos permite usar o chamado Estamentos Preparados que nada mais é do que executar a consulta de forma parametrizada, para que a própria biblioteca faça um trabalho de depuração e seja menos sujeita a ataques. Vamos ver a seguir como executar uma consulta simples e, em seguida, seu equivalente com Stament preparado.
Nesta consulta simples, assumiremos que temos uma tabela em nosso Base de dados ligar Autor que recebe um código de autor e depois seu nome, claro que por ser demonstrativo não é um exemplo de uma boa mesa, só nos interessa saber como funciona a conexão a partir de PDO.
Na imagem, vemos que chamamos um método chamado consulta () do objeto criado com a string de conexão PDO, então escrevemos nossa consulta sem muitos problemas:

PROLONGAR

O problema é que recebemos os valores diretamente, então não há como melhorar e reutilizar isso, ao invés disso, se fizermos um Stament preparado, veremos que primeiro indicamos qual é a consulta a ser executada, depois com outro método a tornamos efetiva e passamos os valores necessários a ela. Isso coloca o mecanismo de depuração de parâmetros em ação. PDO dando assim um nível adicional de proteção. Vamos ver na imagem a seguir como o exemplo anterior ficaria usando Estamentos Preparados agora.

PROLONGAR

À primeira vista pode parecer algo complexo e não ótimo, porém se analisarmos, vemos que primeiro estabelecemos a consulta a ser executada, em seguida, criamos um array com os parâmetros que nossa consulta receberá, no caso do exemplo que recebemos o código do autor e seu nome, finalmente executamos a consulta e passamos a ela o array de parâmetros.
Se quisermos consultar uma vez, já inserimos alguns valores em nosso Base de dados é muito simples, só precisamos fazer isso com uma consulta SELECIONE, isso nos permitirá trazer os registros, no passado dependíamos de funções como mysql_fetch_array () ou mysql_fetch_assoc () que uma vez consumido nos deixou incapazes de gerenciar seus resultados novamente.
Com PDO Vamos obter os dados diretamente do objeto, então sempre os teremos disponíveis durante a execução, vejamos no exemplo a seguir como seria feito:

Vemos como inicialmente fazemos um Stament preparado, fazemos uma consulta simples neste caso e, em seguida, com um loop enquanto () obteremos cada um dos registros e faremos sua impressão, se notarmos que não nos referimos a MySQL em qualquer lugar em nosso código, portanto, se alterarmos a string de conexão e usarmos outro mecanismo que tenha uma tabela e um Base de dados com o mesmo nome e estrutura, poderemos obter os seus dados sem ter que alterar o nosso código.
O que MySQL é o mecanismo de banco de dados mais popular para integração com PHP, também há uma alternativa e é MySQLi que nada mais é do que uma interface orientada a objetos. Sua forma de trabalhar é muito semelhante à de PDONo entanto, o que muda é que é apenas para este mecanismo de banco de dados popular, portanto, uma conversão de plataforma cruzada não seria possível.
Sua string de conexão é um pouco menos complexa, pois divide o nome do servidor no host e o Banco de Dados para ser utilizado em dois parâmetros distintos, além do nome e senha do usuário, vamos ver como fica:
$ objConex = new mysqli (HostName, usuário, senha, DatabaseName);

Vamos ver no exemplo a seguir como estabelecemos uma conexão usando MySQLi e como podemos realizar uma inserção de dados simples:

PROLONGAR

Notamos que há uma semelhança com PDO por ter um método consulta () também, no entanto, isso só funcionará para MySQL.
Agora vamos receber e iterar os dados que podemos obter de uma consulta, para isso vamos usar o mesmo método consulta () e então o método fetch_assoc () para obter os resultados:

A coisa mais interessante que notamos é que usamos o método perto (), isso o que ele faz é fechar a conexão atual e limpar o buffer de forma a otimizar o uso dos recursos do servidor.
ImportanteDevemos ter em mente que se tivermos um sistema feito em uma versão antiga do PHP e não vamos migrar para novas versões, talvez mudar as strings de conexão para Base de dados e os métodos de consulta podem não ser uma boa ideia para o trabalho que representam. No entanto, se quisermos fazer novos aplicativos e sistemas, é melhor começar com uma base sólida usando essas novas bibliotecas com suporte em versões futuras do PHP.
Com isso finalizamos este tutorial, vimos que as novas alternativas são muito mais limpas e seguras, e sua facilidade de uso as torna adequadas aos tempos atuais.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo
wave wave wave wave wave