O lançamento do PHP versão 5 inclui uma nova extensão para acessar bancos de dados MySQL chamado MySQL melhorada , ou MySQLi . MySQLi oferece melhor desempenho , uma estrutura orientada a objetos, suporte para instruções preparadas e funcionalidade adicional , na forma de operações de banco de dados. A extensão atual MySQL não será reforçada , por exemplo, para fornecer suporte unicode , e acabará por ser eliminados começando com PHP versão 6. Estrutura Orientada a Objetos
MySQLi fornece um conjunto de funções para uma estrutura de códigos de estilo de procedimento para fazer a transição do MySQL mais fácil. No entanto, também fornece a funcionalidade através de um conjunto de classes orientadas a objetos . Usando um estilo orientado a objetos pode fazer a integração do MySQL se encaixam melhor com a versão PHP 5 recursos orientados a objetos e, muitas vezes elimina a necessidade de criar variáveis adicionais para apoiar as operações e tarefas do MySQL . Por exemplo, a seguir mostra o código para conectar a um servidor de banco de dados e abrir um banco de dados em MySQL e MySQLi tanto : MySQL : $ dbc = mysql_connect ( " usuário" "localhost" , "senha" ); $ db = mysql_select_database ( "banco de dados ");
mySQLi : $ db = new mysqli ( " usuário" "localhost", "password ", " banco de dados ");
instruções Preparadas
Talvez a maior diferença entre MySQL e MySQLi é o apoio do MySQLi para instruções preparadas . Com o MySQL , você tem que ter um cuidado especial para escapar cada corda usada em uma consulta para evitar ataques de injeção SQL . Com declarações MySQLi e preparados, você liga um conjunto de parâmetros para uma consulta e definir os parâmetros iguais para os diferentes valores que pretende utilizar na consulta. MySQLi cuida de garantir que todo o código está devidamente escapou antes de ser aplicada ao banco de dados . Por exemplo, o código a seguir insere dois recrods em uma tabela MySQL usando MySQLi : ?
$ Stmt = $ db- > prepare ( " INSERT INTO PESSOAS FullName , Email values () (,) ; $ stmt -> bind_param ( "ss ", $ fullname , $ email ); $ fullname = " John Johnson "; $ email = " john@johnjohnson.com "; $ stmt -> execute () ; $ fullname = " Mary Johnson "; $ email = " mary@johnjohnson.com "; $ stmt -> execute () ; $ stmt - > close ();
Eficiência melhorias
Devido às declarações preparadas e outras melhorias de eficiência, a extensão MySQLi deve executar mais rápido do que as declarações do MySQL equivalentes. Como você pode ver no exemplo anterior, através de declarações preparadas , a sobrecarga de uma inserção só é necessária uma vez, quando é preparado o comunicado. com uma inserção MySQL equivalente , a sobrecarga da inserção seria repetido a cada consulta de inserção no banco de dados .
Transações
MySQLi fornece funcionalidade adicional na forma de transações. Com a extensão MySQLi , você pode agrupar um conjunto de operações de dados juntos em uma transação e executar as operações em conjunto como uma única transação. Se uma operação na transação falhar, toda a operação falha e qualquer mudanças que foram feitas são desfeitas . , 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 bem-sucedida, a operação não é um sucesso, e você não quer sair de um estado em que uma conta foi debitado mas a outra conta não foi creditado.