Qual é o melhor, MySQL ou MySQLi? E porque? Qual devo usar?
Quero dizer melhor, não apenas em termos de desempenho, mas qualquer outro recurso relevante.
Qual é o melhor, MySQL ou MySQLi? E porque? Qual devo usar?
Quero dizer melhor, não apenas em termos de desempenho, mas qualquer outro recurso relevante.
Respostas:
Se você der uma olhada na Visão Geral Aprimorada da Extensão do MySQL , deverá informar tudo o que você precisa saber sobre as diferenças entre as duas.
Os principais recursos úteis são:
mysql_*()
agora está obsoleto e será removido em breve. Você não deve usá-lo para novo código.
Existe uma página de manual dedicada a ajudar na escolha entre mysql, mysqli e PDO em
A equipe do PHP recomenda mysqli ou PDO_MySQL para novos desenvolvimentos:
É recomendável usar as extensões mysqli ou PDO_MySQL. Não é recomendado usar a antiga extensão mysql para novos desenvolvimentos. Uma matriz detalhada de comparação de recursos é fornecida abaixo. O desempenho geral das três extensões é considerado o mesmo. Embora o desempenho da extensão contribua apenas com uma fração do tempo total de execução de uma solicitação da web PHP. Frequentemente, o impacto é tão baixo quanto 0,1%.
A página também possui uma matriz de recursos comparando as APIs de extensão. As principais diferenças entre a API mysqli e mysql são as seguintes:
mysqli mysql
Development Status Active Maintenance only
Lifecycle Active Long Term Deprecation Announced*
Recommended Yes No
OOP API Yes No
Asynchronous Queries Yes No
Server-Side Prep. Statements Yes No
Stored Procedures Yes No
Multiple Statements Yes No
Transactions Yes No
MySQL 5.1+ functionality Yes No
* http://news.php.net/php.internals/53799
Há uma matriz de recursos adicionais comparando as bibliotecas (novo mysqlnd versus libmysql) em
e um artigo de blog muito completo em
Eu abandonei usando o mysqli. É simplesmente muito instável. Eu tive consultas que travam o PHP usando o mysqli, mas funcionam bem com o pacote mysql. O mysqli também trava nas colunas LONGTEXT . Este bug foi criado de várias formas desde pelo menos 2005 e permanece quebrado . Eu sinceramente gostaria de usar instruções preparadas, mas o mysqli não é confiável o suficiente (e ninguém parece se preocupar em corrigi-lo). Se você realmente deseja declarações preparadas, vá com o DOP.
para mim, declarações preparadas são um recurso obrigatório. mais exatamente, ligação de parâmetro (que funciona apenas em instruções preparadas). é a única maneira realmente sensata de inserir strings nos comandos SQL. eu realmente não confio nas funções de 'escape'. a conexão com o banco de dados é um protocolo binário, por que usar um subprotocolo limitado a ASCII para parâmetros?