Qual é a diferença entre MySQL, MySQLi e PDO? [fechadas]

Respostas:

100

Existem (mais de) três maneiras populares de usar o MySQL do PHP. Isso descreve alguns recursos / diferenças PHP: Escolhendo uma API :

  1. ( DEPRECATED ) As funções do mysql são procedurais e usam escape manual.
  2. O MySQLi é um substituto para as funções do mysql, com versões orientadas a objetos e procedurais. Tem suporte para declarações preparadas.
  3. O DOP (PHP Data Objects) é uma camada geral de abstração de banco de dados com suporte para MySQL entre muitos outros bancos de dados. Ele fornece instruções preparadas e flexibilidade significativa na maneira como os dados são retornados.

Eu recomendaria o uso de DOP com declarações preparadas. É uma API bem projetada e permitirá que você mova mais facilmente para outro banco de dados (incluindo qualquer que suporte ODBC ), se necessário.

Matthew Flaschen
fonte
9
Geralmente existe a confusão de que, para procedimentos, você deve usar as funções mysql _ * (), onde, para OO, você usa mysqli! O fato é que o mysqli substitui completamente a implementação inicial (PHP 4) do mysql. É possível usar o estilo procedural e o estilo OO com o mysqli.
Patrick Allaert
@ Patrick, obrigado. Eu corrigi isso.
Matthew Flaschen
46

Essas são APIs diferentes para acessar um back-end do MySQL

  • O mysql é a API histórica
  • O mysqli é uma nova versão da API histórica. Ele deve ter um desempenho melhor e ter um melhor conjunto de funções. Além disso, a API é orientada a objetos.
  • PDO_MySQL , é o MySQL para DOP. A DOP foi introduzida no PHP e o projeto visa criar uma API comum para todos os bancos de dados, portanto, em teoria, você poderá migrar entre o RDMS sem alterar nenhum código (se você não usar a função RDBM específica em suas consultas ), também orientado a objetos.

Portanto, depende do tipo de código que você deseja produzir. Se você preferir camadas orientadas a objetos ou funções simples ...

Meu conselho seria

  1. DOP
  2. MySQLi
  3. mysql

Também acho que a API do mysql provavelmente seria excluída em versões futuras do PHP.

RageZ
fonte
3
Não é mais um sentimento: PHP7 removido API mysql, deixando DOP e mysqli
Manuel
3

mysqli é a versão aprimorada do mysql.

A extensão PDO define uma interface leve e consistente para acessar bancos de dados em PHP. Cada driver de banco de dados que implementa a interface PDO pode expor recursos específicos do banco de dados como funções de extensão regulares.

Sarfraz
fonte
4
copiar do arquivo manual não é muito útil.
XuDing 12/12/2015
3

Especificamente, a extensão MySQLi oferece os seguintes benefícios extremamente úteis sobre a antiga extensão MySQL.

Interface OOP (além de procedural) Transação de suporte a instruções preparadas + suporte a procedimentos armazenados Melhoramentos mais agradáveis ​​na velocidade da sintaxe Depuração aprimorada

Extensão DOP

A extensão PHP Data Objects é uma camada de abstração de banco de dados. Especificamente, essa não é uma interface do MySQL, pois fornece drivers para muitos mecanismos de banco de dados (é claro, incluindo o MYSQL).

O PDO visa fornecer uma API consistente, o que significa que, quando um mecanismo de banco de dados é alterado, o código é alterado para refletir isso deve ser mínimo. Ao usar o PDO, seu código normalmente "simplesmente funciona" em muitos mecanismos de banco de dados, simplesmente alterando o driver que você está usando.

Além de ser compatível com vários bancos de dados, o PDO também suporta instruções preparadas, procedimentos armazenados e muito mais, enquanto usa o Driver MySQL.


fonte