MySQL Vs. MySQLi do PHP
Estrutura orientada a objetos
O MySQLi fornece um conjunto de funções para uma estrutura de código com estilo procedural para facilitar a transição do MySQL. No entanto, ele também fornece funcionalidade por meio de um conjunto de classes orientadas a objetos. O uso de estilo orientado a objetos pode tornar a integração do MySQL mais adequada para os recursos orientados a objetos do PHP versão 5 e, muitas vezes, elimina a necessidade de criar variáveis adicionais para suportar operações e tarefas do MySQL. Por exemplo, o seguinte mostra o código para se conectar a um servidor de banco de dados e abrir um banco de dados no MySQL e no MySQLi: MySQL: $ dbc = mysql_connect ("localhost", "user", "password"); $ db = mysql_select_database ("banco de dados");
MySQLi: $ db = new mysqli ("localhost", "usuário", "senha", "banco de dados");
Instruções preparadas
Talvez a maior diferença entre o MySQL e o MySQLi seja o suporte do último para instruções preparadas. Com o MySQL você deve ter um cuidado especial para usar a instrução de escape em cada string usada em uma consulta para evitar ataques de injeção de SQL. Com o MySQLi e as instruções preparadas, você pode vincular conjuntos de parâmetros a uma consulta e corresponder a última com os diferentes valores que deseja usar na consulta. O MySQLi é responsável por assegurar que a instrução de escape seja usada apropriadamente em todo o código antes de ser aplicada no banco de dados. Por exemplo, o código a seguir insere dois registros em uma tabela MySQL usando o MySQLi:
$ stmt = $ db-> prepare ("Valores INSERT INTO PEOPLE (FullName, Email) (?, ?); $ stmt-> bind_param (" ss ", $ nome completo, $ email); $ nome completo =" John Johnson "; $ email = "[email protected]"; $ stmt-> execute () $ fullname = "Mary Johnson"; $ email = "[email protected]"; $ stmt-> execute (); $ stmt-> fechar ();
Melhorias de eficiência
Devido a instruções preparadas e outras melhorias de eficiência, a extensão MySQL deve executar mais rápido que as instruções equivalentes do MySQL. Como você pode ver no exemplo anterior usando instruções preparadas, a sobrecarga de uma inserção só é necessária uma vez, quando a instrução é preparada. Com uma instrução de inserção equivalente no MySQL, a sobrecarga de inserção teria que ser repetida com cada consulta para o banco de dados.
Transações
O MySQLi fornece funcionalidade adicional na forma de transações. Com a extensão MySQLi, você pode agrupar um conjunto de operações de dados em uma transação e executar as operações juntas como uma única transação. Se uma operação de transação falhar, toda a operação falhará e todas as alterações feitas serão revertidas. Por exemplo, você pode usar uma transação ao programar uma transferência de dinheiro entre duas contas porque, a menos que ambos os lados da operação sejam bem-sucedidos, a operação não será bem-sucedida e você não deseja deixar um estado no qual uma conta foi debitada mas o outro não foi acreditado.