Formação Oracle DBA Completa


Por que não devemos usar funções do tipo mysql_*

Por que não devemos usar funções do tipo mysql_*

3 de março de 2017 2 Por Ramos de Souza Janones
Powered by Rock Convert

Entenda o Por que de não usar as funções do tipo mysql_* com a linguagem de programação PHP e o banco de dados MySQL e as melhores práticas.

Resumo

A resposta é uma só: não devemos usar funções da extensão “mysql” pelo seu desenvolvimento ter sido descontinuado; a extensão vai se tornar obsoleta em breve, ou seja, código que utilize essas funções não irá funcionar em futuras versões do PHP.


Detalhes

Não há problemas de segurança com a biblioteca em si, mas sim com os usuários da biblioteca.

A votação para descontinuar (deprecate) ou não resultou em 25 votos a favor e 12 votos contra. Foi uma boa maioria, mas não foi uma decisão unânime. Fonte (oficial): https://wiki.php.net/rfc/mysql_deprecation

Curso de PHP ERP com NFe.

A extensão não tem defeitos. O problema é a má utilização. Ela pode ser usada com segurança, e bons desenvolvedores têm feito isso há anos.

A citação abaixo, também desse mesmo documento oficial, aponta para as verdadeiras razões para descontinuar a extensão:

VAI GOSTAR: Guia Jurídico Definitivo para Startups

VEJA TAMBÉM: Sucesso na Carreira com o LinkedIn

RECOMENDAMOS: Curso de Desenvolvimento de Games Completo

LEIA: Como Aprender Java e ir além do mercado de trabalho tradicional


ext/mysql is hard to maintain code. It is not getting new features. Keeping it up to date for working with new versions of libmysql or mysqlnd versions is work, we probably could spend that time better.

(A extensão mysql contém código de difícil manutenção. Não está recebendo novas “features”. Mantê-la atualizada para funcionar com novas versões de libmysqld e mysqlnd é trabalhoso; nós poderíamos estar usando melhor esse tempo.)

Em outras palavras: “Para que ter um trabalhão para manter esse código velho?” – pois na medida em que novas versões do MySQL (e suas “client libs”) são lançadas, a extensão precisa ser atualizada…

…e, além disso, já existem a extensão mysqli (mais moderna) e a alternativa PDO… então… para que continuar mantendo? Vamos descontinuar? Aí, 25 votaram “sim”, 12 votaram “não”, e a decisão foi tomada.

Mais detalhes

Porque o uso das funções mysql_* foi desaprovado (deprecated) a partir do PHP 5.5 e, segundo a documentação, as funções serão removidas em versões futuras do PHP, fazendo com que os programas que as utilizam parem de funcionar nessas versões.

Limitações das funções mysql_*

Ao contrário das funções mysqli_*, as funções mysql_* não dão suporte a

  • consultas assíncronas, não-bloqueantes
  • consultas parametrizadas
  • stored procedures
  • transações

A falta de suporte a consultas parametrizadas significa que, ao usar funções mysql_* sem tomar certas precauções, seu programa está vulnerável a ataques de injeção de SQL, comprometendo a segurança e integridade dos dados. Exemplo:

// consulta vulnerável a injeção de SQL

$query =("SELECT * FROM alunos WHERE id = $id")

// consulta parametrizada, variável $id é higienizada

Powered by Rock Convert

$query =("SELECT * FROM alunos WHERE id = ?")

$query->bind_param("i", $id);

Alternativas

Como alternativa, recomenda-se usar funções mysqli_*, que superam as limitações já mencionadas das funções mysql_*.

Outra opção é usar PDO (PHP Data Objects) que fornece uma camada de abstração de acesso a dados, o que significa que, independentemente de qual banco de dados você está usando, você pode usar as mesmas funções para emitir consultas e buscar dados.

Um quandro para ilustrar

Banco de dados

Artigos e dicas sobre banco de dados que você vai gostar:

MongoDB

– Principais diferenças entre MongoDB e MySQL ou outro RDBMS

– Southbank Software apresenta dbKoda: uma ferramenta de desenvolvimento Open Source para MongoDB

MySQL e Instruções SQL em geral

– SQL e Regex – Entenda quando e como usar em instruções SQL

– MySQL – Manter o formato Date e DateTime em formato dd/mm/Year e dd/mm/Year:HH:mm:ss

– SQL – O que são VIEWS SQL, vantagens e desvantagens

– Instrução Insert MySQL e JSON com todos os bancos brasileiros

– PHP e MySQL – Entendendo as codificações iso-8859-1 e UTF-8 e outras

– Como redefinir a senha de root do MySQL ou do MariaDB

– Para que serve uma MySQL Transaction?

– Banco de Dados – Índices desnecessários no banco são um problema?

– Entenda a diferença entre LIKE, IN e BETWEEN no MySQL

– LinkedIn desenvolve a ferramenta MySQL Query Analyzer

– Como otimizar consultas MySQL

– Quando é interessante desnormalizar o banco de dados?

– Entenda Views em SQL, vantagens e desvantagens

– O que é normalização de banco de dados

– Por que não devemos usar funções do tipo mysql_*

SQL – Entenda as diferenças entre aspas simples e duplas

– SQL – Not IN ou Not EXISTS quando usar?

– SQL – Entendendo JOINS

– PHP Do Zero Ao Profissional – Análise do Curso 

 

Aproveitando, segue nossa indicação:

Curso de Laravel – Plataforma EAD (LaraSchool), foi criado pelaEspecializaTi. Resumidamente: Neste curso você vai aprender a criar uma plataforma ead multi usuários, onde qualquer pessoa pode se cadastrar no sistema e postar cursos e comercializar e ainda aprenderá como integrar o Laravel com um dos gateways de pagamentos mais famosos que existem para produtos digitais, o HotMart. Espero que goste desta dica! 😉

Subscribe to our mailing list

* indicates required


Além de PHP e MySQL, deseja receber outro tema?

LEIA TAMBÉM:  As diferenças entre Power Query, Power Pivot, Power BI

Email Format


Siga os bons!

Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.

Últimos posts por Ramos de Souza Janones (exibir todos)

Sumário
Por que não devemos usar funções do tipo mysql_*
Nome do artigo
Por que não devemos usar funções do tipo mysql_*
Descrição
Entenda o Por que de não usar as funções do tipo mysql_* com a linguagem de programação PHP e o banco de dados MySQL e as melhores práticas.
Autor
Nome
Ramos da Informática
Logo

Frontend Do Zero Ao Profissional