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

Como é o interior de uma declaração preparada?


Se você está tentando fazer o que parece estar tentando fazer... não tente fazer isso.

Não é isso que uma declaração preparada é (ou pelo menos não é o que deveria ser).

Seu código de cliente não deve estar tentando interpolar valores na string de consulta para gerar uma consulta "concluída" para enviar ao servidor para execução. Essa é uma receita para o desastre, para não mencionar uma falsa sensação de segurança.

As declarações preparadas entregam a declaração com ? placeholders para o servidor como está, onde o servidor "prepara" a instrução para execução... e então o cliente envia os parâmetros para o servidor ("vinculando" os parâmetros) para execução. Fazendo isso, o servidor nunca ficará confuso quanto a "qual parte é o SQL" e "qual parte são os dados", impossibilitando a injeção de sql e tornando desnecessário o escape e a higienização dos dados.

Se você não estiver se comunicando diretamente com a C-API, deverá chamar os métodos em sua biblioteca que expõem essas mesmas funções para você.