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

Diferença entre PDO->query() e PDO->exec()


Apesar de qualquer diferença teórica, nenhuma dessas funções deve ser usada de qualquer maneira - portanto, não há nada para se preocupar.

A única razão para usar o PDO é o suporte para declarações preparadas , mas nenhuma dessas funções oferece isso. Então, eles não devem ser usados.

Use prepare()/execute() em vez disso, especialmente para instruções UPDATE,INSERT,DELETE.

Observe que, embora as declarações preparadas sejam amplamente divulgadas como medida de segurança, é apenas para atrair a atenção das pessoas. Mas sua real o objetivo é a formatação de consulta adequada . O que também oferece segurança - pois a consulta formatada corretamente também não pode ser injetada - apenas como efeito colateral. Mas, novamente - a formatação é um objetivo principal, apenas porque mesmo dados inocentes podem causar um erro de consulta se não forem formatados corretamente.

EDIT:Observe que execute() retorna apenas TRUE ou FALSE para indicar o sucesso da operação. Para outras informações, como o número de registros afetados por um UPDATE , métodos como rowCount() são fornecidos. Consulte os documentos .