Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mude um site grande de MySQL para MySQLi


Não há uma resposta fácil para sua pergunta, pois praticamente todas as maneiras simples de fazer isso envolvem fazer as coisas de maneira diferente quando o aplicativo foi escrito.

Se você tiver chamadas diretas para funções mysql_* em todo o seu código e nenhuma camada de abstração de banco de dados onde você faz suas consultas por meio de uma classe ou função auxiliar, você precisará editar todos os comandos.

Você não pode simplesmente adicionar um i a comandos como mysql_query como processualmente mysqli_query() requer que o primeiro parâmetro seja o link para o banco de dados onde com mysql_query() se uma conexão fosse fornecida, era um segundo parâmetro.

Em vez de apenas mudar mysql_query(...) para mysqli_query($link,.....) eu recomendaria que não há melhor momento para colocar uma camada de abstração db no lugar. Portanto, use funções, por exemplo, sql_query(), que realmente processam suas consultas; portanto, no futuro, se você precisar alterar o banco de dados novamente, poderá apenas atualizar os comandos específicos do banco de dados em um arquivo de abstração. Dessa forma, se você escrever uma função que envolva mysqli_query, poderá simplesmente renomear seu mysql_query() para sua função auxiliar e deixar a função auxiliar se preocupar em colocar o link lá.

Embora essa seja a maneira mais simples, ela não vinculará parâmetros ou preparará instruções, o que é um fator importante na prevenção de vulnerabilidades de injeção de sql

Depois de alterar todos esses comandos, você precisa testar.

Se você não tem testes automatizados escritos, então este é provavelmente um bom momento para começar a escrevê-los. Mesmo que você precise verificar se todas as alterações funcionaram, se você fizer isso por teste automatizado, poderá evitar essa dor no futuro.